P8462题解
注意这题 x 和 y 要反着读!
题目思路
最基本的就按照题目要求走就行了,注意,
可以用两个二维数组,一个
当人走在点上的时候灰是不会落上去的,所以人所在的那个点
接下来就遍历一遍,每个
思路大概就是这些了,接下来上代码吧。
代码
#include<bits/stdc++.h>
#define N 55
using namespace std;
int read()
{
int x = 0,f = 1;
char c = getchar();
while(c<'0' || c>'9')
{
if(c=='-') f = -1;
c = getchar();
}
while(c>='0' && c<='9')
{
x = (x<<3)+(x<<1)+(c^48);
c = getchar();
}
return x*f;
}
int a[N][N],b[N][N];
int main()
{
int n=read(),m=read(),y=read(),x=read();
memset(a,0,sizeof(a));
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
b[i][j] = 1;
x = n-x+1;
while(m--)
{
char c;
cin >> c;
b[x][y] = 0;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
a[i][j] += b[i][j];
if (c=='N') x--;
if (c=='S') x++;
if (c=='W') y--;
if (c=='E') y++;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
b[i][j]++;
}
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
cout << a[i][j] << " ";
cout << endl;
}
return 0;
}