参考https://blog.csdn.net/u011815404/article/details/80188367
#include<iostream>
#include<cstring>
using namespace std;
char a[101][101][100];
int main()
{
int n, day, total;
int i, j, k;
char check;
cin>>n;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
cin>>a[i][j][1];
cin>>day;
for(k=2; k<=day; k++)
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if ((a[i][j][k-1]=='.')
&&((a[i-1][j][k-1]=='@')
||(a[i+1][j][k-1]=='@')
||(a[i][j-1][k-1]=='@')
||(a[i][j+1][k-1]=='@')))
a[i][j][k]='@';
else
a[i][j][k]=a[i][j][k-1];
total = 0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j][day]=='@')
total++;
cout<<total<<endl;
return 0;
}
用三维数组,完成递推。