1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| import java.util.*;
public class Solution {
private double eps = 1e-6;
public boolean Game24Points(int[] arr) { if (arr == null || arr.length < 2) return false; List<Double> list = new ArrayList<>(); for (int i = 0; i < arr.length; i++) { list.add(arr[i] * 1.0); } return isValid24(list); }
public boolean isValid24(List<Double> list) { if (list.size() == 1) return Math.abs(list.get(0) - 24) < eps; for (int i = 0; i < list.size(); i++) { for (int j = 0; j < i; j++) { double p = list.get(i), q = list.get(j); List<Double> d = new ArrayList<>(); d.add(p + q); d.add(p - q); d.add(q - p); d.add(p * q); if (q > eps) d.add(p / q); if (p > eps) d.add(q / p); list.remove(i); list.remove(j); for (Double aDouble : d) { list.add(aDouble); if (isValid24(list)) { return true; } list.remove(list.size()-1); } list.add(j,q); list.add(i,p); } } return false; }
public static void main(String[] args) { int[] arr = new int[]{7, 2, 1, 10}; System.out.println(new Solution().Game24Points(arr)); } }
|