hiho一下 第九十八周 题目1 : 搜索一·24点

编程入门 行业动态 更新时间:2024-10-14 02:18:23

hiho一下 第九十八周 <a href=https://www.elefans.com/category/jswz/34/1769227.html style=题目1 : 搜索一·24点"/>

hiho一下 第九十八周 题目1 : 搜索一·24点



题目1 : 搜索一·24点

时间限制: 10000ms 单点时限: 1000ms 内存限制: 256MB
描述

周末,小Hi和小Ho都在家待着。

在收拾完房间时,小Ho偶然发现了一副扑克,于是两人考虑用这副扑克来打发时间。

小Ho:玩点什么好呢?

小Hi:两个人啊,不如来玩24点怎么样,不靠运气就靠实力的游戏。

小Ho:好啊,好啊。

<经过若干局游戏之后>

小Ho:小Hi,你说如果要写个程序来玩24点会不会很复杂啊?

小Hi:让我想想。

<过了几分钟>

小Hi:我知道了!其实很简单嘛。

提示:24点

输入

第1行:1个正整数, t,表示数据组数,2≤t≤100。

第2..t+1行:4个正整数, a,b,c,d,1≤a,b,c,d≤10。

输出

第1..t行:每行一个字符串,第i行表示第i组能否计算出24点。若能够输出"Yes",否则输出"No"。

样例输入
2
5 5 5 1
9 9 9 9
样例输出
Yes
No
搜索  遍历所有可能的情况就可以了。。。

#include <stdio.h>
#include <math.h>
double num[4];
bool dfs(int n)
{if(n==1){//n=1时  最终的结果保存在num[0] if(fabs(num[0]-24)<0.000001)return true;elsereturn false;}for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){double x=num[i];double y=num[j];//已经使用过的数 使它等于最后一个数 num[j]=num[n-1];num[i]=x+y;if(dfs(n-1)) return true;num[i]=x-y;if(dfs(n-1)) return true;num[i]=y-x;if(dfs(n-1)) return true;num[i]=x*y;if(dfs(n-1)) return true;//避免除0 if(y){num[i]=x/y;if(dfs(n-1)) return true;}//避免除0 if(x){num[i]=y/x;if(dfs(n-1)) return true;}//回溯 num[i]=x;num[j]=y;}}return false;
}
int main()
{int n;scanf("%d",&n);while(n--){scanf("%lf %lf %lf %lf",&num[0],&num[1],&num[2],&num[3]);if(dfs(4))puts("Yes");elseputs("No");}return 0;
} 


题目1 : 搜索一·24点

时间限制: 10000ms 单点时限: 1000ms 内存限制: 256MB
描述

周末,小Hi和小Ho都在家待着。

在收拾完房间时,小Ho偶然发现了一副扑克,于是两人考虑用这副扑克来打发时间。

小Ho:玩点什么好呢?

小Hi:两个人啊,不如来玩24点怎么样,不靠运气就靠实力的游戏。

小Ho:好啊,好啊。

<经过若干局游戏之后>

小Ho:小Hi,你说如果要写个程序来玩24点会不会很复杂啊?

小Hi:让我想想。

<过了几分钟>

小Hi:我知道了!其实很简单嘛。

提示:24点

输入

第1行:1个正整数, t,表示数据组数,2≤t≤100。

第2..t+1行:4个正整数, a,b,c,d,1≤a,b,c,d≤10。

输出

第1..t行:每行一个字符串,第i行表示第i组能否计算出24点。若能够输出"Yes",否则输出"No"。

样例输入
2
5 5 5 1
9 9 9 9
样例输出
Yes
No
搜索  遍历所有可能的情况就可以了。。。

#include <stdio.h>
#include <math.h>
double num[4];
bool dfs(int n)
{if(n==1){//n=1时  最终的结果保存在num[0] if(fabs(num[0]-24)<0.000001)return true;elsereturn false;}for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){double x=num[i];double y=num[j];//已经使用过的数 使它等于最后一个数 num[j]=num[n-1];num[i]=x+y;if(dfs(n-1)) return true;num[i]=x-y;if(dfs(n-1)) return true;num[i]=y-x;if(dfs(n-1)) return true;num[i]=x*y;if(dfs(n-1)) return true;//避免除0 if(y){num[i]=x/y;if(dfs(n-1)) return true;}//避免除0 if(x){num[i]=y/x;if(dfs(n-1)) return true;}//回溯 num[i]=x;num[j]=y;}}return false;
}
int main()
{int n;scanf("%d",&n);while(n--){scanf("%lf %lf %lf %lf",&num[0],&num[1],&num[2],&num[3]);if(dfs(4))puts("Yes");elseputs("No");}return 0;
} 


更多推荐

hiho一下 第九十八周 题目1 : 搜索一·24点

本文发布于:2024-03-12 01:37:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1730398.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:题目   第九十八   hiho

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!