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并跳出循环,在每一次运算后还需将数组还原
原文:http://blog.csdn.net/u013240812/article/details/25410907