您的位置:首页 > 其它

24点游戏算法

2017-06-14 16:33 295 查看
//1 2 2 10 怎么通过??????
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<fstream>
#define N 4
using namespace std;

int flag=0;
int num
;

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;
}

/*
//以下方法在牛客上只通过90%,2 9 9 5 应输出false 但输出true
#include<bits/stdc++.h>
using namespace std;
bool is24(char a[])
{
double num[10]= {0};
num[0]=a[0]-'0'+1;
int cnt=0;
for(int i=1; i<7; i+=2)
{
if(a[i]=='+')
{
num[++cnt]=a[i+1]-'0'+1;
}
else if(a[i]=='-')
{
num[++cnt]=0-(a[i+1]-'0'+1);
}
else if(a[i]=='*')
{
num[cnt]*=a[i+1]-'0'+1;
}
else if(a[i]=='/')
{
num[cnt]/=a[i+1]-'0'+1;
}
}
double sum=0;
for(int i=0; i<=cnt; i++)
sum+=num[i];
if(sum<=24+0.0000001&&sum>=24-0.0000001)return true;
return false;
}
int main()
{
int n[4];
while(cin>>n[0]>>n[1]>>n[2]>>n[3])
{
char a[7];
int flag=1;
char op[4]= {'+','-','*','/'};
for(int i1=0; i1<4&&flag; i1++)
for(int i2=0; i2<4&&flag; i2++)
for(int i3=0; i3<4&&flag; i3++)
for(int i4=0; i4<4&&flag; i4++)
//if(i1!=i2&&i1!=i3&&i1!=i4&&i2!=i3&&i2!=i4&&i3!=i4)
{
for(int k1=0; k1<4&&flag; k1++)
for(int k2=0; k2<4&&flag; k2++)
for(int k3=0; k3<4&&flag; k3++)
{
a[0]=n[i1]-1+'0',a[2]=n[i2]-1+'0',a[4]=n[i3]-1+'0',a[6]=n[i4]-1+'0';
a[1]=op[k1],a[3]=op[k2],a[5]=op[k3];
if(is24(a))
{
cout<<"true"<<endl;
flag=0;
break;
}
}

}
if(flag==1)cout<<"false"<<endl;
}
return 0;
}
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法