题解 | #24点运算#
24点运算
https://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
private static boolean exist = false;
private static Map<String, Integer> map = new HashMap<String, Integer>() {
{
put("2", 2);
put("3", 3);
put("4", 4);
put("5", 5);
put("6", 6);
put("7", 7);
put("8", 8);
put("9", 9);
put("10", 10);
put("J", 11);
put("Q", 12);
put("K", 13);
put("A", 1);
}
};
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
if (str.toLowerCase().contains("joker")) {
System.out.println("ERROR");
return;
}
String[] nums = str.split(" ");
boolean[] used = new boolean[4];
dfs("", nums, used, 0, 0);
if (!exist) {
System.out.println("NONE");
}
}
private static void dfs(String res, String[] nums, boolean[] used, int target,
int index) {
if (index == 4) {
if (target == 24) {
exist = true;
System.out.println(res);
}
return;
}
for (int i = 0; i < 4; i++) {
if (!used[i]) {
used[i] = true;
if (index == 0) {
dfs(res + nums[i], nums, used, map.get(nums[i]), index + 1);
dfs(res + nums[i], nums, used, map.get(nums[i]), index + 1);
dfs(res + nums[i], nums, used, map.get(nums[i]), index + 1);
dfs(res + nums[i], nums, used, map.get(nums[i]), index + 1);
} else {
dfs(res + "+" + nums[i], nums, used, target + map.get(nums[i]), index + 1);
dfs(res + "-" + nums[i], nums, used, target - map.get(nums[i]), index + 1);
dfs(res + "*" + nums[i], nums, used, target * map.get(nums[i]), index + 1);
dfs(res + "/" + nums[i], nums, used, target / map.get(nums[i]), index + 1);
}
used[i] = false;
}
}
}
}
查看14道真题和解析