您的位置:首页 > 其它

24点纸牌游戏计算

2014-05-17 21:51 381 查看
直接看代码吧,写得搞清楚了,so easy

#include<iostream>
#include<cmath>
using namespace std;
double a[4];
int search(int n){
if(n==1){                         //判断是否为24点
if(fabs(a[0]-24.0)<0.0000001)
return 1;
return 0;
}
for(int i=0;i<4;i++)              //4个数里取两个进行加减乘除,再递归计算剩下的3,2知道剩下一个时判断是否为24点
for(int j=i+1;j<4;j++){
double x,y;
x=a[i]; y=a[j];
a[j]=a[n-1];

a[i]=x+y;
if(search(n-1))
return 1;

a[i]=x-y;
if(search(n-1))
return 1;

a[i]=y-x;
if(search(n-1))
return 1;
a[i]=x*y;
if(search(n-1))
return 1;
if(y){
a[i]=x/y;
if(search(n-1))
return 1;
}
if(x){
a[i]=x/y;
if(search(n-1))
return 1;
}
a[i]=x;
a[j]=y;
}
return 0;
}
int main(){
int T;
cin>>T;
while(T--){
for(int i=0;i<4;i++)   //1<=a[i]<=13
cin>>a[i];
if(search(4))
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: