tj
2024-11-09 20:22:27
发布于:上海
18阅读
0回复
0点赞
#include <iostream>
#include <vector>
using namespace std;
// 计算新的细菌分布矩阵
vector<vector<int>> calculateNextDay(const vector<vector<int>>& matrix) {
vector<vector<int>> newMatrix(9, vector<int>(9, 0));
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (matrix[i][j] > 0) {
int numOffspring = matrix[i][j] * 10;
int numStayHere = matrix[i][j] * 2;
newMatrix[i][j] += numStayHere;
// 八个方向的偏移量
int directions[8][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}, {1, 1}, {-1, -1}, {1, -1}, {-1, 1}};
int numPerDirection = (numOffspring - numStayHere) / 8;
for (int k = 0; k < 8; k++) {
int newI = i + directions[k][0];
int newJ = j + directions[k][1];
if (newI >= 0 && newI < 9 && newJ >= 0 && newJ < 9) {
newMatrix[newI][newJ] += numPerDirection;
}
}
}
}
}
return newMatrix;
}
int main() {
int m, n;
cin >> m >> n;
vector<vector<int>> matrix(9, vector<int>(9, 0));
matrix[4][4] = m;
for (int i = 0; i < n; i++) {
matrix = calculateNextDay(matrix);
}
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
这里空空如也
有帮助,赞一个