题目描述很难懂,意思看懂了这个题并不难。
大致的意思是再模拟细菌生长,周围密度大,生长就慢,密度小,生长就快。关键点在数组D,输出要有格式,第一次提交是PE,后来才发现还有个输出空行。
直接上代码
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 const int DishSize = 25; 6 const char SignTable[]=".!X#"; //简便输出 7 int ol[DishSize][DishSize],no[DishSize][DishSize]; 8 9 int main() { 10 int T,da; 11 int d[20]; 12 13 //freopen("C:\CODE\in.txt", "r", stdin); 14 scanf("%d",&T); 15 while(T--) { 16 scanf("%d",&da); 17 for(int i=0; i<16; i++) { 18 scanf("%d",&d[i]); 19 } 20 21 for(int i=0; i<20; i++) { 22 for(int j=0; j<20; j++) { 23 scanf("%d",&ol[i][j]); 24 } 25 } 26 27 while(da--) { 28 int k=0; 29 30 for(int i=0; i<20; i++) { 31 for(int j=0; j<20; j++) { 32 k=ol[i][j]; 33 if(i>0) 34 k+=ol[i-1][j]; 35 if(i<19) 36 k+=ol[i+1][j]; 37 if(j>0) 38 k+=ol[i][j-1]; 39 if(j<19) 40 k+=ol[i][j+1]; 41 42 no[i][j]=ol[i][j]+d[k]; 43 44 if(no[i][j]<0) 45 no[i][j]=0; 46 if(no[i][j]>3) 47 no[i][j]=3; 48 } 49 } 50 for(int i=0; i<20; i++) { 51 for(int j=0; j<20; j++) { 52 ol[i][j]=no[i][j]; 53 } 54 } 55 56 57 } 58 59 for(int i=0;i<20;i++){ 60 for(int j=0;j<20;j++){ 61 printf("%c",SignTable[ol[i][j]]); 62 } 63 putchar(' '); 64 } 65 //还要输出空行 66 if(T) 67 putchar(' '); 68 } 69 return 0; 70 }