24点游戏
来源:互联网 发布:哪些网络公选课容易过 编辑:程序博客网 时间:2024/06/09 20:46
24点游戏
题目描述
给出4个正整数操作数,你的任务是使用运算符(+,-,*,/)和括号对操作数进行计算,分析是否能得到24,每个操作数只能使用1次,运算符和括号可以多次使用,注意所有的中间结果都是整数。
输入
输入包括多行,每行4个正整数,范围是[1,13],输入以0 0 0 0标记结束
输出
若输入的4个操作数能计算出24,输出Yes,否则输出No
样例输入
1 1 1 1
2 5 7 8
0 0 0 0
样例输出
No
通过递归循环,暴力穷举,计算每两个数之间的每种运算
题目描述
给出4个正整数操作数,你的任务是使用运算符(+,-,*,/)和括号对操作数进行计算,分析是否能得到24,每个操作数只能使用1次,运算符和括号可以多次使用,注意所有的中间结果都是整数。
输入
输入包括多行,每行4个正整数,范围是[1,13],输入以0 0 0 0标记结束
输出
若输入的4个操作数能计算出24,输出Yes,否则输出No
样例输入
1 1 1 1
2 5 7 8
0 0 0 0
样例输出
No
Yes
#include<iostream>
#include<string.h>
using
namespace
std;
double
x[4];
//输入的4个整数
int
f(
int
n)
{
if
(n==1)
{
if
(x[0]==24)
return
1;
else
return
0;
}
for
(
int
i=0;i<n;i++)
{
for
(
int
j=i+1;j<n;j++)
//从数组中任取两个数的组合
{
double
a,b;
a=x[i];
b=x[j];
x[j]=x[n-1];
//将第一个数覆盖掉,长度减一
//运算
// a+b
x[i]=a+b;
if
(f(n-1))
return
1;
// a-b
x[i]=a-b;
if
(f(n-1))
return
1;
// b-a
x[i]=b-a;
if
(f(n-1))
return
1;
// a*b
x[i]=a*b;
if
(f(n-1))
return
1;
if
(b!=0)
{
// a/b
x[i]=a/b;
if
(f(n-1))
return
1;
}
if
(a != 0)
{
// b/a
x[i]=b/a;
if
(f(n-1))
return
1;
}
x[i]=a;
//将数组还原
x[j]=b;
}
}
return
0;
}
int
main()
{
while
(cin>>x[0]>>x[1]>>x[2]>>x[3])
{
if
(x[0]!=0||x[1]!=0||x[2]!=0||x[3]!=0)
{
if
(f(4))
cout <<
"Yes"
<< endl;
else
cout <<
"No"
<< endl;
}
else
return
0;
}
return
0;
}
若找到满足,则返回1并跳出循环,在每一次运算后还需将数组还原
2 0
- 24点游戏代码
- 24点游戏
- 24点扑克牌游戏
- 24点游戏
- 24点游戏
- 《24点游戏》
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏源码
- 24点游戏
- 24点游戏-hero
- 24点游戏
- 24点游戏算法
- PHP中复杂类型的一些探究。。。
- Sysklogd系统日志记录器
- json解析转map
- 面对现实,我变得束手无策
- oracle报错——字符集不匹配
- 24点游戏
- 关于使用jQuery - 获得内容和属性的心得
- 对Thread.interrupt()方法很详细的介绍 中断线程
- 的、精神性的普遍范型。-linian... 人类以自己的语言形式来诠释现
- POJ 3580-可持久化Treap
- 关于操作符,线性表,优先级应该注意的东西
- C++ 通过WIN32 API 获取逻辑磁盘详细信息
- JEECG 深度使用培训班 周六周日公开课(一期班)
- 英拉同意解散国会菲