| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | 
							- const eps = 0.000001
 
- func judgePoint24(nums []int) bool {
 
- 	list := make([]float64, len(nums))
 
- 	for i := range nums {
 
- 		list[i] = float64(nums[i])
 
- 	}
 
- 	return dfs(list)
 
- }
 
- func dfs(nums []float64) bool {
 
- 	l := len(nums)
 
- 	if l == 1 && math.Abs(nums[0]-24.0) <= eps {
 
- 		return true
 
- 	}
 
- 	for i := 0; i < l-1; i++ {
 
- 		for j := i + 1; j < l; j++ {
 
- 			next := make([]float64, l-2)
 
- 			for k, idx := 0, 0; k < l; k++ {
 
- 				if k == i || k == j {
 
- 					continue
 
- 				}
 
- 				next[idx], idx = nums[k], idx+1
 
- 			}
 
- 			p, q := nums[i], nums[j]
 
- 			tmp := []float64{p + q, p - q, q - p, p * q}
 
- 			if eps <= q {
 
- 				tmp = append(tmp, p/q)
 
- 			}
 
- 			if eps <= p {
 
- 				tmp = append(tmp, q/p)
 
- 			}
 
- 			for _, t := range tmp {
 
- 				next = append(next, t)
 
- 				if dfs(next) {
 
- 					return true
 
- 				}
 
- 				next = next[:len(next)-1]
 
- 			}
 
- 		}
 
- 	}
 
- 	return false
 
- }
 
 
  |