public class Solution {
boolean ans = false;
public boolean Game24Points(int[] arr) {
backtrack(arr, 24, new HashSet<>());
return ans;
}
private boolean backtrack(int[] arr, double num, Set path) {
if (num == 0) {
ans = true;
return true;
}
for (int i = 0; i
if (path.contains(i)) continue;
for (int j = i + 1; j
if (path.contains(j)) continue;
path.add(i);
path.add(j);
if (backtrack(arr, num - (arr[i] + arr[j]), path)) return true;
else if (backtrack(arr, num / (arr[i] + arr[j]), path)) return true;
else if (backtrack(arr, num - (arr[i] - arr[j]), path)) return true;
else if (backtrack(arr, num / (arr[i] - arr[j]), path)) return true;
else if (backtrack(arr, num - (arr[j] - arr[i]), path)) return true;
else if (backtrack(arr, num / (arr[j] - arr[i]), path)) return true;
else if (backtrack(arr, num - (arr[i] * arr[j]), path)) return true;
else if (backtrack(arr, num / (arr[i] * arr[j]), path)) return true;
else if (backtrack(arr, num - ((double) arr[i] / arr[j]), path)) return true;
else if (backtrack(arr, num / ((double) arr[i] / arr[j]), path)) return true;
else if (backtrack(arr, num - ((double) arr[j] / arr[i]), path)) return true;
else if (backtrack(arr, num / ((double) arr[j] / arr[i]), path)) return true;
path.remove(i);
path.remove(j);
}
}
return false;
}
} ## 第二题 验证括号有效性