问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利
输入:
4个1-10的数字。[数字允许重复,测试用例保证无异常数字]
输出:
true or false
输入描述:
输入4个int整数
输出描述:
返回能否得到24点,能输出true,不能输出false
输入例子:
7 2 1 10
输出例子:
true
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<fstream>
#define N 4
using namespace std;
int flag=0;
int num[N];
void solveByDfs(int index,int result,int num[])
{
if(result==24)
{
flag=1;
return ;
}
if(result > 24 || index>=4)
return ;
for(int choose=0; choose<4; choose++)
{
switch(choose)
{
case 0:
solveByDfs(index+1,result+num[index],num);
break;
case 1:
solveByDfs(index+1,result-num[index],num);
break;
case 2:
solveByDfs(index+1,result*num[index],num);
break;
case 3:
solveByDfs(index+1,result/num[index],num);
break;
}
// if(flag)
// return;
}
}
int main()
{
int test=0;
while(cin>>num[0]>>num[1]>>num[2]>>num[3])
{
flag=0;
test=0;
//sort(num,num+4);
do
{
solveByDfs(0,test,num);
}
while(next_permutation(num,num+4));
if(flag)
cout<<"true"<<endl;
else
cout<<"false"<<endl;
}
return 0;
}