题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
package edu.shanxi.practise.hj67;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
String[] str_arr = line.split(" ");
int[] num_arr = new int[4];
for(int i = 0;i < 4;i++) num_arr[i] = Integer.parseInt(str_arr[i]);
System.out.println(pailie(num_arr));
}
private static boolean pailie(int[] num_arr){
int[] temp_arr = new int[4];
for(int i = 0;i < 4;i++){
temp_arr[0] = num_arr[i];
for(int j = 0;j < 4;j++){
if(j == i) continue;
else temp_arr[1] = num_arr[j];
for(int k = 0;k < 4;k++){
if(k == i || k == j) continue;
else temp_arr[2] = num_arr[k];
for(int l = 0;l < 4;l++){
if(l!=i && l!=j && l!=k){
temp_arr[3] = num_arr[l];
if(jisuan(temp_arr[0],temp_arr,1)) return true;
}
else continue;
}
}
}
}
return false;
}
private static boolean jisuan(int num,int[] num_arr,int index){
if(index == 3){
if(num + num_arr[index] == 24) return true;
if(num - num_arr[index] == 24) return true;
if(num * num_arr[index] == 24) return true;
if(num % num_arr[index] == 0){
if(num / num_arr[index] == 24) return true;
}
return false;
}else{
boolean flag1 = jisuan(num + num_arr[index],num_arr,index + 1);
boolean flag2 = jisuan(num - num_arr[index],num_arr,index + 1);
boolean flag3 = jisuan(num * num_arr[index],num_arr,index + 1);
boolean flag4 = num % num_arr[index] == 0 ?
jisuan(num / num_arr[index],num_arr,index + 1) : false;
if(flag1 || flag2 || flag3 || flag4) return true;
else return false;
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
String[] str_arr = line.split(" ");
int[] num_arr = new int[4];
for(int i = 0;i < 4;i++) num_arr[i] = Integer.parseInt(str_arr[i]);
System.out.println(pailie(num_arr));
}
private static boolean pailie(int[] num_arr){
int[] temp_arr = new int[4];
for(int i = 0;i < 4;i++){
temp_arr[0] = num_arr[i];
for(int j = 0;j < 4;j++){
if(j == i) continue;
else temp_arr[1] = num_arr[j];
for(int k = 0;k < 4;k++){
if(k == i || k == j) continue;
else temp_arr[2] = num_arr[k];
for(int l = 0;l < 4;l++){
if(l!=i && l!=j && l!=k){
temp_arr[3] = num_arr[l];
if(jisuan(temp_arr[0],temp_arr,1)) return true;
}
else continue;
}
}
}
}
return false;
}
private static boolean jisuan(int num,int[] num_arr,int index){
if(index == 3){
if(num + num_arr[index] == 24) return true;
if(num - num_arr[index] == 24) return true;
if(num * num_arr[index] == 24) return true;
if(num % num_arr[index] == 0){
if(num / num_arr[index] == 24) return true;
}
return false;
}else{
boolean flag1 = jisuan(num + num_arr[index],num_arr,index + 1);
boolean flag2 = jisuan(num - num_arr[index],num_arr,index + 1);
boolean flag3 = jisuan(num * num_arr[index],num_arr,index + 1);
boolean flag4 = num % num_arr[index] == 0 ?
jisuan(num / num_arr[index],num_arr,index + 1) : false;
if(flag1 || flag2 || flag3 || flag4) return true;
else return false;
}
}
}