代码
#include<bits/stdc++.h>
using namespace std;
const int dx[]={1,0,-1,0};
const int dy[]={0,1,0,-1};
const int MAXN=105;
int n,t,cnt;
bool st[MAXN][MAXN],g1[MAXN][MAXN],g2[MAXN][MAXN];
int main()
{
//freopen("Input.txt","r",stdin);
//freopen("Output.txt","w",stdout);
cin>>n;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
{
char c;
cin>>c;
if (c=='@') g1[i][j]=1;
else if (c=='#') st[i][j]=1;
}
cin>>t;
t-=1;
while (t--)
{
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
{
if (st[i][j]) continue;
if (g1[i][j])
for (int k=0;k<4;k++)
{
int xx=i+dx[k],yy=j+dy[k];
if (xx<1||xx>n||yy<1||yy>n||st[xx][yy]) continue;
g2[xx][yy]=1;
}
}
memcpy(g1,g2,sizeof(g1));
}
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
if (g1[i][j]) cnt++;
cout<<cnt<<endl;
return 0;
}