ZOJ - 3938 Defuse the Bomb【模拟】

    科技2023-09-21  95

    题目

    传送门

    题意:总共有5步,每步屏幕显示的1,2,3,4都有不同的操作,问:你每次按得位置和按钮上的数字分别为多少.

    思路:没什么好办法,一步一步模拟…

    AC code

    #include<bits/stdc++.h> using namespace std; int a[7][7],b[5][2]; int main() { ios::sync_with_stdio(0); int t; cin>>t; while(t--) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); int r=1; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) cin>>a[i][j]; } if(r==1) { if(a[0][0]==1||a[0][0]==2) {b[0][0]=2; b[0][1]=a[0][2];} else if(a[0][0]==3) { b[0][0]=3; b[0][1]=a[0][3]; } else if(a[0][0]==4) { b[0][0]=4; b[0][1]=a[0][4]; } r++; } if(r==2) { if(a[1][0]==1) { b[1][1]=4; for(int i=1;i<5;i++) if(a[1][i]==4) { b[1][0]=i; break; } } else if(a[1][0]==2||a[1][0]==4) { b[1][0]=b[0][0]; int k=b[1][0]; b[1][1]=a[1][k]; } else if(a[1][0]==3) { b[1][0]=1; b[1][1]=a[1][1]; } r++; } if(r==3) { if(a[2][0]==1) { int k=b[1][1]; b[2][1]=k; for(int i=1;i<5;i++) if(a[2][i]==k) { b[2][0]=i; break; } } else if(a[2][0]==2) { int k=b[0][1]; b[2][1]=k; for(int i=1;i<5;i++) if(a[2][i]==k) { b[2][0]=i; break; } } else if(a[2][0]==3) { b[2][0]=3; b[2][1]=a[2][3]; } else { b[2][1]=4; for(int i=1;i<5;i++) if(a[2][i]==4) { b[2][0]=i; break; } } r++; } if(r==4) { if(a[3][0]==1) { b[3][0]=b[0][0]; int k=b[3][0]; b[3][1]=a[3][k]; } else if(a[3][0]==2) { b[3][0]=1; b[3][1]=a[3][1]; } else if(a[3][0]==3||a[3][0]==4) { b[3][0]=b[1][0]; int k=b[3][0]; b[3][1]=a[3][k]; } r++; } if(r==5) { if(a[4][0]==1) { b[4][1]=b[0][1]; int k=b[4][1]; for(int i=1;i<5;i++) if(a[4][i]==k) { b[4][0]=i; break; } } else if(a[4][0]==2) { b[4][1]=b[1][1]; int k=b[4][1]; for(int i=1;i<5;i++) if(a[4][i]==k) { b[4][0]=i; break; } } else if(a[4][0]==3) { b[4][1]=b[3][1]; int k=b[4][1]; for(int i=1;i<5;i++) if(a[4][i]==k) { b[4][0]=i; break; } } else if(a[4][0]==4) { b[4][1]=b[2][1]; int k=b[4][1]; for(int i=1;i<5;i++) if(a[4][i]==k) { b[4][0]=i; break; } } } //printf("%d",a[2][3]); for(int i=0;i<5;i++) printf("%d %d\n",b[i][0],b[i][1]); } }//
    Processed: 0.012, SQL: 8