2018全國多校1-C題
阿新 • • 發佈:2018-12-23
把所有情況都列出來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;
}