【gmoj】 【纯模拟】 Brothers
题目
解题思路
一个点与向上下左右4个点是相邻
如果相邻的点是它的讨厌对象,那个城市变为它的归属
处理整一幅图
一共处理k次
代码
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int fx[5]={0,-1,0,1,0},fy[5]={0,0,1,0,-1};
int n,r,c,w,z,xx,yy,a[2][110][110];
int main()
{
scanf("%d%d%d%d",&n,&r,&c,&w);
for (int i=1;i<=r;i++)
for (int j=1;j<=c;j++)
scanf("%d",&a[0][i][j]);
for (int i=1;i<=w;i++)
{
int x=i%2;
memset(a[x],-1,sizeof(a[x]));
for (int j=1;j<=r;j++)
for (int k=1;k<=c;k++)
{
z=(a[x^1][j][k]+1)%n;
if (a[x][j][k]==-1) a[x][j][k]=a[x^1][j][k];
for (int t=1;t<=4;t++)
{
xx=j+fx[t],yy=k+fy[t];
if (z==a[x^1][xx][yy]) a[x][xx][yy]=a[x^1][j][k];
}
}
}
for (int i=1;i<=r;i++)
{
for (int j=1;j<=c;j++)
printf("%d ",a[w%2][i][j]);
printf("\n");
}
return 0;
}