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