题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); List<Integer> list = new ArrayList<>(); boolean[] flag = new boolean[4]; while (sc.hasNext()) { for (int i = 0; i < 4; i++) { list.add(sc.nextInt()); } System.out.println(dfs(list, 0, 24, flag)); } } private static boolean dfs(List<Integer> nums, int deep, int sum, boolean[] flag) { if (deep == 4 && sum == 0) { return true; } for (int i = 0; i < 4; i++) { if (flag[i]) continue; flag[i] = true; if(dfs(nums, deep + 1, sum + nums.get(i), flag)) return true; if(dfs(nums, deep + 1, sum - nums.get(i), flag)) return true; if(dfs(nums, deep + 1, sum * nums.get(i), flag)) return true; if(sum % nums.get(i) == 0){ if(dfs(nums, deep + 1, sum / nums.get(i), flag)) return true; } flag[i] = false; } return false; } }