level 5
#include<iostream>
using namespace std;
double num[5]={1,2,3,4};
bool used[5]={0};
int panduan(int ,double );
int main()
{
int i,j,k;
while(num[1]!=0)
{
for(i=1;i<=4;i++)
{
cin>>num[i];
used[i]=0;
}
k=panduan(4,0);
if(k==1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
system("pause");
return 0;
}
int panduan(int n,double result)
{
int i,j,k=0;
if(n==4)
{
for(i=1;i<=4;i++)
{
for(j=1;j<=4;j++)
{
if(j!=i)
{
used[i]=used[j]=1;
k=panduan(2,num[i]+num[j]);
if(k==1)
{
break;
}
k=panduan(2,num[i]-num[j]);
if(k==1)
{
break;
}
k=panduan(2,num[j]-num[i]);
if(k==1)
{
break;
}
k=panduan(2,num[i]*num[j]);
if(k==1)
{
break;
}
k=panduan(2,num[i]/num[j]);
if(k==1)
{
break;
}
k=panduan(2,num[j]/num[i]);
if(k==1)
{
break;
}
used[i]=used[j]=0;
}
}
if(k==1) break;
}
}
else if(n==2)
{
for(i=1;i<=4;i++)
{
if(used[i]!=1)
{
used[i]=1;
k=panduan(1,result+num[i]);
if(k==1)
{
break;
}
k=panduan(1,result-num[i]);
if(k==1)
{
break;
}
k=panduan(1,num[i]-result);
if(k==1)
{
break;
}
k=panduan(1,result*num[i]);
if(k==1)
{
break;
}
k=panduan(1,result/num[i]);
if(k==1)
{
break;
}
k=panduan(1,num[i]/result);
if(k==1)
{
break;
}
used[i]=0;
}
}
}
else
{
for(i=1;i<=n;i++)
{
if(used[i]!=1)
{
if(result+num[i]==24)
{
k=1;
break;
}
if(result-num[i]==24)
{
k=1;
break;
}
if(num[i]-result==24)
{
k=1;
break;
}
if(result*num[i]==24)
{
k=1;
break;
}
if(result/num[i]==24)
{
k=1;
break;
}
if(num[i]/result==24)
{
k=1;
break;
}
}
}
}
return k;
}
2011年12月02日 05点12分
1
using namespace std;
double num[5]={1,2,3,4};
bool used[5]={0};
int panduan(int ,double );
int main()
{
int i,j,k;
while(num[1]!=0)
{
for(i=1;i<=4;i++)
{
cin>>num[i];
used[i]=0;
}
k=panduan(4,0);
if(k==1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
system("pause");
return 0;
}
int panduan(int n,double result)
{
int i,j,k=0;
if(n==4)
{
for(i=1;i<=4;i++)
{
for(j=1;j<=4;j++)
{
if(j!=i)
{
used[i]=used[j]=1;
k=panduan(2,num[i]+num[j]);
if(k==1)
{
break;
}
k=panduan(2,num[i]-num[j]);
if(k==1)
{
break;
}
k=panduan(2,num[j]-num[i]);
if(k==1)
{
break;
}
k=panduan(2,num[i]*num[j]);
if(k==1)
{
break;
}
k=panduan(2,num[i]/num[j]);
if(k==1)
{
break;
}
k=panduan(2,num[j]/num[i]);
if(k==1)
{
break;
}
used[i]=used[j]=0;
}
}
if(k==1) break;
}
}
else if(n==2)
{
for(i=1;i<=4;i++)
{
if(used[i]!=1)
{
used[i]=1;
k=panduan(1,result+num[i]);
if(k==1)
{
break;
}
k=panduan(1,result-num[i]);
if(k==1)
{
break;
}
k=panduan(1,num[i]-result);
if(k==1)
{
break;
}
k=panduan(1,result*num[i]);
if(k==1)
{
break;
}
k=panduan(1,result/num[i]);
if(k==1)
{
break;
}
k=panduan(1,num[i]/result);
if(k==1)
{
break;
}
used[i]=0;
}
}
}
else
{
for(i=1;i<=n;i++)
{
if(used[i]!=1)
{
if(result+num[i]==24)
{
k=1;
break;
}
if(result-num[i]==24)
{
k=1;
break;
}
if(num[i]-result==24)
{
k=1;
break;
}
if(result*num[i]==24)
{
k=1;
break;
}
if(result/num[i]==24)
{
k=1;
break;
}
if(num[i]/result==24)
{
k=1;
break;
}
}
}
}
return k;
}