题目是由g和*组成的地图。g代表草,每过一个月会从上下左右四个方向长一次。第一行输入n和m,代表行数列数,然后输入n行m列的字符,再输入k,k代表月份。要求输出k月后的地图
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int n,m,k; 5 cin>>n>>m; 6 char a[1000][1000]; 7 int b[1000],c[1000]; 8 for(int i=0;i<n;i++){ 9 for(int j=0;j<m;j++){ 10 cin>>a[i][j]; 11 } 12 } 13 cin>>k; 14 int b1=0; 15 for(int i1=0;i1<k;i1++){ 16 17 for(int i=0;i<n;i++){ 18 for(int j=0;j<m;j++){ 19 if(a[i][j]=='g'){ 20 b[b1]=i; 21 c[b1]=j; 22 b1++; 23 } 24 } 25 } 26 for(int i=0;i<b1;i++){ 27 a[b[i]-1][c[i]]='g'; 28 a[b[i]+1][c[i]]='g'; 29 a[b[i]][c[i]+1]='g'; 30 a[b[i]][c[i]-1]='g'; 31 } 32 } 33 for(int i=0;i<n;i++){ 34 for(int j=0;j<m;j++){ 35 cout<<a[i][j]; 36 } 37 cout<<endl; 38 } 39 }
样例和结果,写的是o(n^3)的,应该只能过部分样例