24点游戏
2017-10-25 20:40
190 查看
以下的这一篇文章不考虑精度的。。
考虑精度的需要列出所有的情况搜索。。没有写。。
问你是否通过加减乘除括号构成24点。
第一行t,表示有多少组测试数据,1<=t<=50
接下来t行,每行4个数字,表示每个数都是多少,1<=a[i]<=13
Output
对于每一次询问,如果能够凑成24点,输出yes,否则输出no
Sample Input
2
3 3 8 8
1 1 1 1
Sample Output
yes
no
难点只是如何任意取两个数
两个for循环任取就好
考虑精度的需要列出所有的情况搜索。。没有写。。
问你是否通过加减乘除括号构成24点。
第一行t,表示有多少组测试数据,1<=t<=50
接下来t行,每行4个数字,表示每个数都是多少,1<=a[i]<=13
Output
对于每一次询问,如果能够凑成24点,输出yes,否则输出no
Sample Input
2
3 3 8 8
1 1 1 1
Sample Output
yes
no
难点只是如何任意取两个数
两个for循环任取就好
#include<iostream> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace::std; double num[5]; const double epx=1e-11; int flag=0; void dfs(int s,double sum) { if(flag==1) { return; } if(s==1) { if(fabs(sum-24)<epx) { flag=1; return ; } } for(int i=1;i<=s;i++) { for(int j=1;j<=s;j++) { if(i==j) continue; int a,b; a=num[i]; b=num[j]; num[j]=num[s]; num[i]=a+b; dfs(s-1,num[i]); num[i]=a-b; dfs(s-1,num[i]); num[i]=a*b; dfs(s-1,num[i]); if(b!=0) { num[i]=a/b; dfs(s-1,num[i]); } num[i]=a; num[j]=b; } } } int main () { int t; cin>>t; while(t--) { flag=0; for(int i=1;i<=4;i++) { cin>>num[i]; } dfs(4,0); if(flag) { puts("yes"); } else { puts("no"); } } }
相关文章推荐
- 华为oj 24点游戏算法
- 24点纸牌游戏
- 24点游戏&&速算24点(dfs)
- 24点游戏
- 编程之美 1.16 24点游戏
- 数据结构和算法设计专题之---24点游戏(穷举法和递归法)
- bzoj1215 24点游戏
- hdoj 1427 24点游戏
- Java swing实现的小游戏24点游戏源码附带视频指导教程
- 华为oj_24点游戏算法
- 算法小记03-算24点游戏
- 庞果网 在线编程 24点游戏
- 华为oj初级 24点游戏算法
- 【编程之美】24点游戏
- 24点游戏
- [ACdream]哗啦啦族的24点游戏[dfs][暴力][精度]
- 24点游戏--java打开方式
- 编程之美————24点游戏算法
- 24点游戏
- 24点纸牌游戏 c语言