24点
Posted 637w
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了24点相关的知识,希望对你有一定的参考价值。
superwyh是一个非常疯狂的24点爱好者,空闲时总是自己拿出扑克来算24点,24点的规则很简单,就是给你4张扑克(从1至13,用A代替1,J代替11,Q代替12,K代替13)通过加减乘除来求得24,各位oier帮了superwyh好多忙,为了报答大家superwyh就和大家做个24点的游戏,superwyh给大家4张牌大家告诉superwyh能不能凑成24就行。
[renqing PS:这道题很easy,是送分的题]
输入格式4张牌的牌面(1<=n<=13)。
输出格式如果能凑成输出”yes”反之输出”no”。
样例输入
A 2 3 4
输出
yes
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int flag[5]={0},num=0,a[5]; string c; int cd[5]; bool used[5]; bool dfs1(int depth,double amount) { if (depth==4) { if (amount>23.999999&&amount<24.000001) return 1; else return 0; } else { for (int i=0;i<4;i++) if (!used[i]) { used[i]=1; if (dfs1(depth+1,amount+cd[i])) return 1; if (dfs1(depth+1,amount-cd[i])) return 1; if (dfs1(depth+1,cd[i]-amount)) return 1; if (amount!=0&&dfs1(depth+1,amount*cd[i])) return 1; if (amount!=0&&dfs1(depth+1,amount/cd[i])) return 1; if (amount!=0&&dfs1(depth+1,cd[i]/amount)) return 1; used[i]=0; } return 0; } } int main() { for(int i=0;i<=3;i++) { cin>>c; if(c[0]==‘A‘)cd[i]=1; else if(c[0]==‘J‘)cd[i]=11; else if(c[0]==‘Q‘)cd[i]=12; else if(c[0]==‘K‘)cd[i]=13; else if(c[0]==‘1‘ && c[1]==‘0‘)cd[i]=10; else cd[i]=c[0]-‘0‘; } if(dfs1(0,0)) cout<<"yes"<<endl; else cout<<"no"<<endl; return 0; }
以上是关于24点的主要内容,如果未能解决你的问题,请参考以下文章