图省事
aid吧
全部回复
仅看楼主
level 5
alone_in_dark 楼主
#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
level 1
c额。。。
2011年12月02日 05点12分 2
level 1
#include<iostream>using namespace std;struct{int x;int y;int number;}game[7000];int main(){char c[80][80];int w,h,i,j,k=0;while(cin>>w>>h){if(w==0&&h==0)break;k++;for(i=1;i<=h;i++){getchar();for(j=1;j<=w;j++)c[i][j]=getchar();}cout<<"Board #"<<k<<":"<<endl;for(i=0;i<=h+1;i++){c[i][0]=' ';c[i][w+1]=' ';}for(j=0;j<=w+1;j++){c[0][j]=' ';c[h+1][j]=' ';}int x1,x2,y1,y2;int count=0;while(cin>>y1>>x1>>y2>>x2){if(x1==0&&x2==0&&y1==0&&y2==0)break;count++;c[x2][y2]=' ';int a[80][80]={0};game[0].x=x1;game[0].y=y1;game[0].number=0;int sum=0,current=0;bool b=0;while(current<=sum){for(i=1;game[current].x+i<=h+1;i++){if(c[game[current].x+i][game[current].y]!=' ')break;if(a[game[current].x+i][game[current].y]==0){sum++;game[sum].number=game[current].number+1;game[sum].x=game[current].x+i;game[sum].y=game[current].y;a[game[sum].x][game[sum].y]=game[sum].number;}}for(i=1;game[current].x-i>=0;i++){if(c[game[current].x-i][game[current].y]!=' ')break;if(a[game[current].x-i][game[current].y]==0){sum++;game[sum].number=game[current].number+1;game[sum].x=game[current].x-i;game[sum].y=game[current].y;a[game[sum].x][game[sum].y]=game[sum].number;}}for(i=1;game[current].y+i<=w+1;i++){if(c[game[current].x][game[current].y+i]!=' ')break;if(a[game[current].x][game[current].y+i]==0){sum++;game[sum].number=game[current].number+1;game[sum].x=game[current].x;game[sum].y=game[current].y+i;a[game[sum].x][game[sum].y]=game[sum].number;}}for(i=1;game[current].y-i>=0;i++){if(c[game[current].x][game[current].y-i]!=' ')break;if(a[game[current].x][game[current].y-i]==0){sum++;game[sum].number=game[current].number+1;game[sum].x=game[current].x;game[sum].y=game[current].y-i;a[game[sum].x][game[sum].y]=game[sum].number;}}if(a[x2][y2]!=0){b=1;break;}current++;}if(b==0)cout<<"Pair "<<count<<": impossible."<<endl;else cout<<"Pair "<<count<<": "<<a[x2][y2]<<" segments."<<endl;c[x2][y2]='X';}}return 0;}
2011年12月11日 10点12分 3
1