版权声明:本文为博主原创文章,转载请说明出处。 https://blog.csdn.net/xianpingping/article/details/82959769
题意:就是4支队伍,两两比一场,一共6场比赛。赢了+3,输了+0,平了各加1.问给了最终得分能否推断出每一场的真实局面。
这道题就是暴力枚举:1-2,1-3,1-4,2-3,2-4,3-4的所有情况。
开始把f设成了全局变量。。。应该是部分变量啊啊啊啊,这个毛病老是犯
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=1000000;
const int inf=0x3f3f3f3f;
int sheng=0,fu=0,ping=0;
int vis[110][110][110][110];
void dfs1(int a,int b,int f1,int f2,int f3,int f4){
if(a==4 && b==4){
/// cout<<"f1:"<<f1<<" "<<f2<<" "<<f3<<" "<<f4<<endl;
if(vis[f1][f2][f3][f4]==1)
{
vis[f1][f2][f3][f4]=2;
}
else if(vis[f1][f2][f3][f4]==0){
vis[f1][f2][f3][f4]=1;
}
return ;
}
if(a==1 && b==2){
f1+=3; f2+=0;
dfs1(1,3,f1,f2,f3,f4);
f1-=3;
f1+=1; f2+=1;
dfs1(1,3,f1,f2,f3,f4);
f1-=1; f2-=1;
f2+=3;
dfs1(1,3,f1,f2,f3,f4);
}
else if(a==1 && b==3){
f1+=3; f3+=0;
dfs1(1,4,f1,f2,f3,f4);
f1-=3;
f1+=1;f3+=1;
dfs1(1,4,f1,f2,f3,f4);
f1-=1;f3-=1;
f1+=0;f3+=3;
dfs1(1,4,f1,f2,f3,f4);
}
else if(a==1 && b==4){
f1+=3; f4+=0;
dfs1(2,3,f1,f2,f3,f4);
f1-=3;
f1+=1;f4+=1;
dfs1(2,3,f1,f2,f3,f4);
f1-=1;f4-=1;
f1+=0;f4+=3;
dfs1(2,3,f1,f2,f3,f4);
}
else if(a==2 && b==3){
f2+=3; f3+=0;
dfs1(2,4,f1,f2,f3,f4);
f2-=3;
f2+=1;f3+=1;
dfs1(2,4,f1,f2,f3,f4);
f2-=1;f3-=1;
f2+=0;f3+=3;
dfs1(2,4,f1,f2,f3,f4);
}
else if(a==2 && b==4){
f2+=3; f4+=0;
dfs1(3,4,f1,f2,f3,f4);
f2-=3;
f2+=1;f4+=1;
dfs1(3,4,f1,f2,f3,f4);
f2-=1;f4-=1;
f2+=0;f4+=3;
dfs1(3,4,f1,f2,f3,f4);
}
else if(a==3 && b==4){
/// cout<<"f1:"<<f1<<" "<<f2<<" "<<f3<<" "<<f4<<endl;
f3+=3; f4+=0;
dfs1(4,4,f1,f2,f3,f4);
f3-=3;
f3+=1;f4+=1;
dfs1(4,4,f1,f2,f3,f4);
f3-=1;f4-=1;
f3+=0;f4+=3;
dfs1(4,4,f1,f2,f3,f4);
}
}
int main()
{
int t;
int cas=0;
int a,b,c,d;
scanf("%d",&t);
memset(vis,0,sizeof(vis));
dfs1(1,2,0,0,0,0);
while(t--){
cas++;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(vis[a][b][c][d]==0){
cout<<"Case #"<<cas<<": "<<"Wrong Scoreboard"<<endl;
}
else{
if(vis[a][b][c][d]==1){
cout<<"Case #"<<cas<<": "<<"Yes"<<endl;
}
else{
cout<<"Case #"<<cas<<": "<<"No"<<endl;
}
}
}
return 0;
}