HDU 1427 速算24点(dfs)
2017-07-25 00:00
330 查看
Description
速算24点相信绝大多数人都玩过。就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13)。要求只用’+’,’-‘,’*’,’/’运算符以及括号改变运算顺序,使得最终运算结果为24(每个数必须且仅能用一次)。游戏很简单,但遇到无解的情况往往让人很郁闷。你的任务就是针对每一组随机产生的四张牌,判断是否有解。我们另外规定,整个计算过程中都不能出现小数。
Input
每组输入数据占一行,给定四张牌。
Output
每一组输入数据对应一行输出。如果有解则输出”Yes”,无解则输出”No”。
Sample Input
A 2 3 6
3 3 8 8
Sample Output
Yes
No
Solution
因为不考虑运算顺序所以直接暴搜,每次选两个数进行加减乘除操作,注意除法的时候要判除数是否为0以及是否可以整除
Code
速算24点相信绝大多数人都玩过。就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13)。要求只用’+’,’-‘,’*’,’/’运算符以及括号改变运算顺序,使得最终运算结果为24(每个数必须且仅能用一次)。游戏很简单,但遇到无解的情况往往让人很郁闷。你的任务就是针对每一组随机产生的四张牌,判断是否有解。我们另外规定,整个计算过程中都不能出现小数。
Input
每组输入数据占一行,给定四张牌。
Output
每一组输入数据对应一行输出。如果有解则输出”Yes”,无解则输出”No”。
Sample Input
A 2 3 6
3 3 8 8
Sample Output
Yes
No
Solution
因为不考虑运算顺序所以直接暴搜,每次选两个数进行加减乘除操作,注意除法的时候要判除数是否为0以及是否可以整除
Code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f #define maxn 5 #define eps 1e-8 int a[maxn]; int flag,vis[maxn]; void dfs(int num)//num表示当前正在进行第几步操作 { if(flag)return ; if(num==4) { for(int i=1;i<=4;i++) if(!vis[i]&&a[i]==24)flag=1; return ; } //选两个数a[i],a[j]进行操作,结果放到a[i]中 for(int i=1;i<=4;i++) if(!vis[i]) for(int j=i+1;j<=4;j++) if(!vis[j]) { vis[j]=1; int x=a[i],y=a[j]; if(y&&x%y==0)a[i]=x/y,dfs(num+1); if(x&&y%x==0)a[i]=y/x,dfs(num+1); a[i]=x-y,dfs(num+1); a[i]=y-x,dfs(num+1); a[i]=x+y,dfs(num+1); a[i]=x*y,dfs(num+1); a[i]=x,vis[j]=0; } } int get(char *c) { if(strlen(c)==2)return 10; if(c[0]=='A')return 1; if(c[0]=='J')return 11; if(c[0]=='Q')return 12; if(c[0]=='K')return 13; return c[0]-'0'; } char s[3]; int main() { while(~scanf("%s",s)) { a[1]=get(s); for(int i=2;i<=4;i++) { scanf("%s",s); a[i]=get(s); } flag=0; memset(vis,0,sizeof(vis)); dfs(1); printf("%s\n",flag?"Yes":"No"); } return 0; }
相关文章推荐
- HDU 1427 速算24点(DFS) *
- HDU 1427 dfs 速算24点
- hdu 1427 速算24点 dfs暴力搜索
- [HDU 1427]速算24点(DFS暴搜)
- hdu 1427 速算24点
- HDU---1427(24点游戏,DFS回溯)
- HDU 1427 速算24点 枚举+dfs
- hdu 1427 速算24点
- hdu 1427 速算24点
- HDU - 1427 速算24点 (尚未完成)
- hdu 1427 速算24点(next_permutation 搜索)
- hdu 1427 24点暴力dfs
- HDU:1427 速算24点
- HDU-1427 速算24点
- hdoj 1427 速算24点 【经典DFS】
- hdoj 1427 速算24点【经典dfs】
- 【HDU 1427 计算24点 DFS】
- [HDU 1427]速度计算24点(DFS暴力搜索)
- hdoj 1427 速算24点 【经典 dfs 】
- HDU 1427 - 速算24点