1. 程式人生 > >2018全國多校1-C題

2018全國多校1-C題

把所有情況都列出來QAQ估計是最笨的方法了
但是做對了還是很開心的hhhh
題目如下
https://www.nowcoder.com/acm/contest/67/C

#include<stdio.h>
#include<string.h>
int map[10][10];
int col[10][10];
int x,y;
void chushihua(){
    memset(map,0,sizeof(map));
    map[1][1]=11;
    map[1][2]=10;
    map[1][3]=9;
    map[1][4]=8;
    map[2][1]=12;
    map[2][4]=7;
    map[3][1]=1;
    map[3][4]=6;
    map[4][1]=2;
    map[4][2]=3;
    map[4][3]=4;
    map[4][4]=5;
}
void yidong(int q,int w){
    for(int i=1;i<=4;i++)
for(int j=1;j<=4;j++) { if(map[i][j]==q){ x=i;y=j;break; } } map[x][y]=0; //printf("%d %d ",x,y); int to[5][2]=
{{0,0},{-1,0},{1,0},{0,-1},{0,1}}; x=x+to[w][0]; y=y+to[w][1]; //printf("%d %d\n",x,y); map[x][y]=q; } void jiance(){ memset
(col,0,sizeof(col)); for(int i=1;i<=4;i++) for(int j=1;j<=4;j++){ if(map[i][j]>
=1 && map[i][j]<=6) col[i][j]=1; if(map[i][j]>=7 && map[i][j]<=12) col[i][j]=2; } if(x==3 &&col[x][y]==1 && col[x-1][y]==1 && col
[x-2][y]==2 &&col[x+1][y]==0){ map[x-2][y]=0; } if(x==4 &&col[x][y]==1 && col[x-1][y]==1 && col[x-2][y]==2 &&col[x-3][y]==0){ map[x-2][y]=0; } if(x==2 &&col[x][y]==1 && col[x-1][y]==1 && col[x+1][y]==2 &&col[x+2][y]==0){ map[x+1][y]=0; } if(x==2 &&col[x][y]==1 &&col[x+1][y]==1 && col[x-1][y]==2 && col[x+2][y]==0){ map[x-1][y]=0; } if(x==3 &&col[x][y]==1 &&col[x-1][y]==1 && col[x+1][y]==2 &&col[x-2][y]==0){ map[x+1][y]=0; } if(x==2 &&col[x][y]==1 && col[x+1][y]==1 && col[x+2][y]==2 && col[x-1][y]==0){ map[x+2][y]=0; } if(x==3 &&col[x][y]==1 && col[x+1][y]==1 &&col[x-1][y]==2 && col[x-2][y]==0){ map[x-1][y]=0; } if(x==1 &&col[x][y]==1 && col[x+1][y]==1 &&col[x+2][y]==2 &&col[x+3][y]==0){ map[x+2][y]=0; } if(y==3 &&col[x][y]==1 && col[x][y-1]==1 &&col[x][y-2]==2 &&col[x][y+1]==0){ map[x][y-2]=0; } if(y==4 &&col[x][y]==1 && col[x][y-1]==1 && col[x][y-2]==2 &&col[x][y-3]==0){ map[x][y-2]=0; } if(y==2 &&col[x][y]==1 &&col[x][y-1]==1 && col[x][y+1]==2 &&col[x][y+2]==0){ map[x][y+1]=0; } if(y==2 &&col[x][y]==1 &&col[x][y+1]==1 && col[x][y-1]==2 &&col[x][y+2]==0){ map[x][y-1]=0; } if(y==3 &&col[x][y]==1 && col[x][y-1]==1 && col[x][y+1]==2 && col[x][y-2]==0){ map[x][y+1]=0; } if(y==2 &&col[x][y]==1 && col[x][y+1]==1 && col[x][y+2]==2 && col[x][y-1]==0){ map[x][y+2]=0; } if(y==3 &&col[x][y]==1 && col[x][y+1]==1 &&col[x][y-1]==2 && col[x][y-2]==0){ map[x][y-1]=0; } if(y==1 &&col[x][y]==1 &&col[x][y+1]==1 && col[x][y+2]==2 && col[x][y+3]==0){ map[x][y+2]=0; } if(x==3 &&col[x][y]==2 && col[x-1][y]==2 && col[x-2][y]==1 &&col[x+1][y]==0){ map[x-2][y]=0; } if(x==4 &&col[x][y]==2 && col[x-1][y]==2 && col[x-2][y]==1 &&col[x-3][y]==0){ map[x-2][y]=0; } if(x==2 &&col[x][y]==2 && col[x-1][y]==2 && col[x+1][y]==1 &&col[x+2][y]==0){ map[x+1][y]=0; } if(x==2 &&col[x][y]==2 &&col[x+1][y]==2 && col[x-1][y]==1 && col[x+2][y]==0){ map[x-1][y]=0; } if(x==3 &&col[x][y]==2 &&col[x-1][y]==2 && col[x+1][y]==1 &&col[x-2][y]==0){ map[x+1][y]=0; } if(x==2 &&col[x][y]==2 && col[x+1][y]==2 && col[x+2][y]==1 && col[x-1][y]==0){ map[x+2][y]=0; } if(x==3 &&col[x][y]==2 && col[x+1][y]==2 &&col[x-1][y]==1 && col[x-2][y]==0){ map[x-1][y]=0; } if(x==1 &&col[x][y]==2 && col[x+1][y]==2 &&col[x+2][y]==1 &&col[x+3][y]==0){ map[x+2][y]=0; } if(y==3 &&col[x][y]==2 && col[x][y-1]==2 &&col[x][y-2]==1 &&col[x][y+1]==0){ map[x][y-2]=0; } if(y==4 &&col[x][y]==2 && col[x][y-1]==2 && col[x][y-2]==1 &&col[x][y-3]==0){ map[x][y-2]=0; } if(y==2 &&col[x][y]==2 &&col[x][y-1]==2 && col[x][y+1]==1 &&col[x][y+2]==0){ map[x][y+1]=0; } if(y==2 &&col[x][y]==2 &&col[x][y+1]==2 && col[x][y-1]==1 &&col[x][y+2]==0){ map[x][y-1]=0; } if(y==3 &&col[x][y]==2 && col[x][y-1]==2 && col[x][y+1]==1 && col[x][y-2]==0){ map[x][y+1]=0; } if(y==2 &&col[x][y]==2 && col[x][y+1]==2 && col[x][y+2]==1 && col[x][y-1]==0){ map[x][y+2]=0; } if(y==3 &&col[x][y]==2 && col[x][y+1]==2 &&col[x][y-1]==1 && col[x][y-2]==0){ map[x][y-1]=0; } if(y==1 &&col[x][y]==2 &&col[x][y+1]==2 && col[x][y+2]==1 && col[x][y+3]==0){ map[x][y+2]=0; } } int main() { int n; int a,b,cout=0; while(scanf("%d",&n)!=EOF){ chushihua(); for(int i=1;i<=n;i++) { scanf("%d%d",&a,&b); yidong(a,b); jiance(); } printf("#Case %d:\n",++cout); for(int i=1;i<=4;i++){ for(int j=1;j<=4;j++) printf("%3d",map[i][j]); printf("\n"); } } return 0; }