题意:给一个天数N,求20*20方阵内细菌的变化情况。每次变化加上一个d[k],d数组有给定的16个数。k是某个格子它本身加上它上下左右的四个数。 简单模拟题。
分析:
#include<iostream> using namespace std; int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; char den[]=".!X#"; int D[16]; int map[20][20],tmp[20][20]; void Fun() { int i,j,index,d,x,y; for(i=0;i<20;i++) for(j=0;j<20;j++) { index=map[i][j]; for(d=0;d<4;d++) { x=i+dir[d][0]; y=j+dir[d][1]; if(x>=0&&x<20&&y>=0&&y<20) index+=map[x][y]; } tmp[i][j]=map[i][j]+D[index]; if(tmp[i][j]>3) tmp[i][j]=3; else if(tmp[i][j]<0) tmp[i][j]=0; } for(i=0;i<20;i++) for(j=0;j<20;j++) map[i][j]=tmp[i][j]; } int main() { int T,day,i,j,k,t; cin>>T; for(t=1;t<=T;t++) { cin>>day; for(i=0;i<16;i++) cin>>D[i]; for(i=0;i<20;i++) for(j=0;j<20;j++) cin>>map[i][j]; for(k=0;k<day;k++) Fun(); //模拟 for(i=0;i<20;i++) { for(j=0;j<20;j++) cout<<den[map[i][j]]; cout<<endl; } if(t<T) cout<<endl; } return 0; }
HDU ACM 1057 A New Growth Industry 简单模拟
原文地址:http://blog.csdn.net/a809146548/article/details/46390603