World Cup (爆搜)
阿新 • • 發佈:2018-12-14
題意:就是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; }