24点游戏算法
问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利
输入:
4个1-10的数字。[数字允许重复,测试用例保证无异常数字]
输出:
true or false
import java.util.*;
public class Main{
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()) {
String s = sc.nextLine();
String[] input = s.split(" ");
int[] inputNums = new int[input.length];
for(int i=0;i<input.length;i++) {
inputNums[i] = Integer.parseInt(input[i]);
}
int[] temp = new int[input.length];
for(int i=0;i<temp.length;i++) {
temp[i] = 0;
}
int num = 0;
String result = "";
if(check(inputNums,temp,num)) {
result = "true";
}
else {
result = "false";
}
System.out.println(result);
}
}
public static boolean check(int[] inputNums,int[] temp,double num){
for (int i = 0; i < inputNums.length; i++) {
if(temp[i]>0) {
continue;
}
else {
temp[i] = 1;
if (check(inputNums, temp,num + inputNums[i])
|| check(inputNums,temp ,num - inputNums[i])
|| check(inputNums,temp ,num * inputNums[i])
|| check(inputNums, temp,num / inputNums[i])) {
return true;
}
temp[i] = 0;
}
}
if(num-24==0)
return true;
else
return false;
}
}
问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利
输入:
4个1-10的数字。[数字允许重复,测试用例保证无异常数字]
输出:
true or false
import java.util.*;
public class Main{
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()) {
String s = sc.nextLine();
String[] input = s.split(" ");
int[] inputNums = new int[input.length];
for(int i=0;i<input.length;i++) {
inputNums[i] = Integer.parseInt(input[i]);
}
int[] temp = new int[input.length];
for(int i=0;i<temp.length;i++) {
temp[i] = 0;
}
int num = 0;
String result = "";
if(check(inputNums,temp,num)) {
result = "true";
}
else {
result = "false";
}
System.out.println(result);
}
}
public static boolean check(int[] inputNums,int[] temp,double num){
for (int i = 0; i < inputNums.length; i++) {
if(temp[i]>0) {
continue;
}
else {
temp[i] = 1;
if (check(inputNums, temp,num + inputNums[i])
|| check(inputNums,temp ,num - inputNums[i])
|| check(inputNums,temp ,num * inputNums[i])
|| check(inputNums, temp,num / inputNums[i])) {
return true;
}
temp[i] = 0;
}
}
if(num-24==0)
return true;
else
return false;
}
}