rqnoj PID74 24点
来源:互联网 发布:美工是干嘛的 编辑:程序博客网 时间:2024/06/14 05:01
题目描述
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<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<cstdlib>#include<algorithm>#define eps 1e-10using namespace std;int a[10],pd[10];void init(){ int i;char ch[10];for(i=0;i<4;i++) {scanf("%s",ch); if(ch[0]=='A') a[i]=1; else if(ch[0]=='J') a[i]=11; else if(ch[0]=='Q') a[i]=12; else if(ch[0]=='K') a[i]=13; else if(ch[0]=='1'&&ch[1]=='0') a[i]=10; else a[i]=ch[0]-'0'; }}bool dfs(int usd,double sum){int i;if(usd==4) {if(fabs(sum-24)<eps) return true; else return false; }else {for(i=0;i<4;i++) {if(!pd[i]) {pd[i]=1; if(dfs(usd+1,sum+a[i])) return true; if(dfs(usd+1,sum-a[i])) return true; if(dfs(usd+1,a[i]-sum)) return true; if(sum!=0&&dfs(usd+1,sum*a[i])) return true; if(sum!=0&&dfs(usd+1,sum/a[i])) return true; if(sum!=0&&dfs(usd+1,a[i]/sum)) return true; pd[i]=0; } }return false; }}int main(){init();if(dfs(0,0)) printf("yes\n");else printf("no\n");return 0;}
0 0
- rqnoj PID74 24点
- rqnoj-24
- 津津的储存计划-rqnoj-24
- rqnoj-332 & rqnoj-53
- RQNOJ 164
- RQNOJ 311
- RQNOJ 34
- 决斗 RQNOJ
- rqnoj-153
- rqnoj-394
- rqnoj-3
- rqnoj-12
- rqnoj-93
- rqnoj-4
- rqnoj-1
- rqnoj-2
- rqnoj-20
- rqnoj-15
- Test run failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException'
- eclipse注释的设置和部分模板
- UIKit类结构图
- 以太网的启示--公开课笔记--
- Java初级优化
- rqnoj PID74 24点
- live555中openRTSP用法
- 编写的通用数据库操作类
- 前台UI框架网址
- tomcat启动异常
- Java高级优化技术
- IP与点分十进制数的字符串之间的转换(c++)
- sqlcipher 加密数据库问题3
- 依赖属性