内存限制:128 MB 时间限制:1.000 S 标准输入输出
题目类型:传统 评测方式:文本比较 上传者:liuyong
提交:2551 通过:1009
题目描述
给出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
#include
#include
using
namespace
std;
int
num[4];
bool
judge24(
int
n){
if
(n==1)
return
num[0]==24;
for
(
int
i=0;i
for
(
int
j=i+1;j
int
a=num[i],b=num[j];
num[j]=num[n-1];
num[i]=a+b;
if
(judge24(n-1)==
true
)
return
true
;
num[i]=a-b;
if
(judge24(n-1)==
true
)
return
true
;
num[i]=b-a;
if
(judge24(n-1)==
true
)
return
true
;
num[i]=a*b;
if
(judge24(n-1)==
true
)
return
true
;
if
(b!=0 && a%b==0){
num[i]=a/b;
if
(judge24(n-1)==
true
)
return
true
;
}
if
(a!=0 && b%a==0){
num[i]=b/a;
if
(judge24(n-1)==
true
)
return
true
;
}
num[i]=a;
num[j]=b;
}
}
return
false
;
}
int
main(){
while
(cin>>num[0]>>num[1]>>num[2]>>num[3] ){
if
(num[0]==0)
break
;
if
(judge24(4)==
true
) cout<<
"Yes"
<
else
cout<<
"No"
<
}
return
0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)