24点游戏
2013-04-18 12:03
274 查看
描述
几十年前全世界就流行一种数字扑克游戏,至今仍有人乐此不疲.在中国我们把这种游戏称为“算24点”。您作为游戏者将得到4个1-13(在扑克牌里用A代替1,J代替11,Q代替12,K代替13)之间的自然数作为操作数,而您的任务是对这4个操作数进行适当的算术运算,判断运算结果是否等于24。能输出1,不能输出0。格式
输入格式
四个牌面值。牌面值与牌面值之间用一个空格隔开。输出格式
输出0或1。样例1
样例输入1[复制]
3 8 10 Q
样例输出1[复制]
1
限制
每个测试点1sView Code
#include<iostream> #include<stdio.h> #include<string.h> #include<cmath> #define exp 1e-6 using namespace std; int dd[5]; bool flag[5]; bool mark; void dfs(int step,double sum) { if(step==4) { if(fabs(sum-24)<exp) { mark=true; } return; } if(mark) return; int i; for(i=0;i<4;i++) { if(!flag[i]) { flag[i]=true; dfs(step+1,sum*dd[i]*1.0); if(mark) return; dfs(step+1,sum+dd[i]*1.0); if(mark) return; dfs(step+1,sum-dd[i]*1.0); if(mark) return; dfs(step+1,dd[i]*1.0-sum); if(mark) return; if(dd[i]!=0) { dfs(step+1,sum/(dd[i]*1.0)); if(mark) return; } if(sum!=0) { dfs(step+1,(dd[i]*1.0)/sum); if(mark) return; } flag[i]=false; } } } int main() { char num[5][5]; while(~scanf("%s",num[0])) { if(num[0][0]=='2' || num[0][0]=='3' ||num[0][0]=='4' || num[0][0]=='5' || num[0][0]=='6' || num[0][0]=='7' || num[0][0]=='8' || num[0][0]=='9') dd[0]=num[0][0]-'0'; else if(num[0][0]=='A') dd[0]=1; else if(num[0][0]=='J') dd[0]=11; else if(num[0][0]=='Q') dd[0]=12; else if(num[0][0]=='K') dd[0]=13; else dd[0]=10; int i; for(i=1;i<4;i++) { scanf("%s",num[i]); if(num[i][0]=='2' || num[i][0]=='3' ||num[i][0]=='4' || num[i][0]=='5' || num[i][0]=='6' || num[i][0]=='7' || num[i][0]=='8' || num[i][0]=='9') dd[i]=num[i][0]-'0'; else if(num[i][0]=='A') dd[i]=1; else if(num[i][0]=='J') dd[i]=11; else if(num[i][0]=='Q') dd[i]=12; else if(num[i][0]=='K') dd[i]=13; else dd[i]=10; } memset(flag,false,sizeof(flag)); mark=false; for(i=0;i<4;i++) { flag[i]=true; dfs(1,dd[i]*1.0); flag[i]=false; } if(mark) printf("1\n"); else printf("0\n"); } return 0; }
这是一道深搜题目,首先计算所有的排列顺序,运用所有的运算符号,这样可以忽略括号带来的运算优先级的不同,值得注意的是减法和除法运算要考虑a-b和b-a两种可能,a/b 和b/a,还必须保证分母不能为0,其他的都是深搜模板了。
相关文章推荐
- 【codevs 4069】24点游戏
- ACDREAM 05C 哗啦啦族的24点游戏(DFS专场)
- C语言设计24点游戏。
- 24点游戏
- 凑24点游戏实现
- 华为OJ24点游戏算法
- 24点游戏的回溯实现
- NYOJ43 24点游戏 扩展板 同样利用昨天写的后缀法求值
- 24点游戏算法及实现(后缀表达式思想)
- 24点游戏
- 数据结构和算法设计专题之---24点游戏(穷举法和递归法)
- 24点游戏算法
- [编程之美] PSet1.16 24点游戏
- 24点游戏算法
- 【24点游戏】cocos2dx 源码
- 24点游戏算法
- Cdoj 24点游戏之解题报告
- 24点纸牌游戏
- 24点游戏C语言(附源代码)
- c++简单24点游戏