【rqnoj 74】24点
2018-06-17 21:45:37来源:未知 阅读 ()
题目描述
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,是送分的题]
样例输入
A 2 3 4
输出
yes
DP会Wa,就不粘代码了。
搜索AC
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 string s;int a[5]; 7 bool used[5]; 8 bool dfs(int dep,double sum){ 9 if(dep==4){ 10 if(sum>23.999999&&sum<24.000001) return true; 11 else return false; 12 } 13 else{ 14 for(int i=0;i<4;i++){ 15 if(!used[i]){ 16 used[i]=1; 17 if(dfs(dep+1,sum+a[i])) return true; 18 if(dfs(dep+1,sum-a[i])) return true; 19 if(dfs(dep+1,a[i]-sum)) return true; 20 if(sum!=0&&dfs(dep+1,sum*a[i])) return true; 21 if(sum!=0&&dfs(dep+1,sum/a[i])) return true; 22 if(sum!=0&&dfs(dep+1,a[i]/sum)) return true; 23 used[i]=0; 24 } 25 } 26 return false; 27 } 28 } 29 int main(){ 30 for(int i=0;i<4;i++){ 31 cin>>s; 32 if(s[0]=='A') a[i]=1; 33 else if(s[0]=='J') a[i]=11; 34 else if(s[0]=='Q') a[i]=12; 35 else if(s[0]=='K') a[i]=13; 36 else if(s[0]=='1'&&s[1]=='0') a[i]=10; 37 else a[i]=s[0]-'0'; 38 } 39 if(dfs(0,0)) printf("yes\n"); 40 else printf("no\n"); 41 return 0; 42 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Vector基本操作
- P1358 扑克牌 2020-05-06
- 博弈--巴什博弈 2020-04-24
- Z 字形变换 2020-04-14
- [题记-并查集] 合根植物 - 蓝桥杯 2020-04-07
- 无法正确通过算法题目都是哪些原因造成的? 2020-04-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash