题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
double[] num = new double[4];
int[] visit = new int[4];
boolean flag = false;
for(int i=0; i<4; i++){
num[i] = (double)in.nextInt();
visit[i] = 0;
}
for(int i=0; i<4; i++){
visit[i] = 1;
if(dfs(num,visit,num[i])){
flag = true;
break;
}
}
System.out.print(flag);
}
public static boolean dfs(double[] num, int[] visit, double res){
if(res == (double)24){
return true;
}
for(int i=0; i<4; i++){
if(visit[i] == 0){
visit[i] = 1;//标记已使用
if(dfs(num, visit, res + num[i])
|| dfs(num, visit, res - num[i])
|| dfs(num, visit, res * num[i])
|| dfs(num, visit, res / num[i])){
return true;
}
visit[i] = 0;//回溯
}
}
return false;
}
}

