15_细菌的繁殖与扩散

来源:互联网 发布:windows 菜单栏 编辑:程序博客网 时间:2024/04/30 04:15
/*Name: 15_细菌的繁殖与扩散Copyright: Author: Date: 29-08-17 10:53Description: 15_细菌的繁殖与扩散查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述在边长为9的正方形培养皿中,正中心位置有m个细菌。假设细菌的寿命仅一天,但每天可繁殖10个后代,而且这10个后代,有两个分布在原来的单元格中,其余的均匀分布在其四周相邻的八个单元格中。求经过n(1≤n≤4)天后,细菌在培养皿中的分布情况。输入输入为两个整数,第一个整数m表示中心位置细菌的个数(2 ≤m ≤30),第二个整数n表示经过的天数(1 ≤n ≤4)输出输出九行九列整数矩阵,每行的整数之间用空格分隔。整个矩阵代表n天后细菌在培养皿上的分布情况。样例输入2 1样例输出0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 2 2 2 0 0 00 0 0 2 4 2 0 0 00 0 0 2 2 2 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0*/#include <iostream>#include <cstdio>using namespace std;const int N = 9;int A[N][N], B[N][N];int X[8] = {-1,-1,-1,0,1,1,1,0};//行坐标变化,从西北角开始int Y[8] = {-1,0,1,1,1,0,-1,-1};//列坐标变化,从西北角开始int main() {int n = 9, t, r, c;cin >> A[4][4] >> t;for (int d=0; d<t; d++){for (int i=0; i<n; i++){for (int j=0; j<n; j++){if (A[i][j] == 0)continue; B[i][j] += A[i][j] * 2;for (int k=0; k<8; k++){r = i+X[k];c = j+Y[k];if (r>=0 && r<n && c>=0 && c<n)B[r][c] += A[i][j];}}}for (int i=0; i<n; i++){for (int j=0; j<n; j++){A[i][j] = B[i][j];B[i][j] = 0; //寿命仅1天 }}}for (int i=0; i<n; i++){for (int j=0; j<n; j++){cout << A[i][j] << " ";}cout << endl;}return 0;} 

原创粉丝点击