java生命游戏算法
时间: 2023-11-10 20:02:08 浏览: 47
生命游戏(Game of Life)是一种细胞自动机,由英国数学家约翰·康威于1970年提出。它基于一个二维的网格,每个格子可以处于存活或死亡的状态。游戏遵循三个规则:
1. 一个存活的细胞如果周围少于2个存活的邻居细胞,那么它会死亡(模拟生命因孤立而死亡)。
2. 一个存活的细胞如果周围有2个或3个存活的邻居细胞,那么它会继续存活。
3. 一个存活的细胞如果周围有超过3个存活的邻居细胞,那么它会死亡(模拟生命因拥挤而死亡)。
4. 一个死亡的细胞如果周围有3个存活的邻居细胞,那么它会复活。
下面是用Java实现生命游戏算法的示例代码:
```java
public class GameOfLife {
public void gameOfLife(int[][] board) {
int m = board.length;
int n = board[0].length;
int[][] next = new int[m][n];
int[][] directions = {{-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 1}, {1, -1}, {1, 0}, {1, 1}};
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
int liveNeighbors = 0;
for (int[] direction : directions) {
int newRow = i + direction[0];
int newCol = j + direction[1];
if (newRow >= 0 && newRow < m && newCol >= 0 && newCol < n && board[newRow][newCol] == 1) {
liveNeighbors++;
}
}
if (board[i][j] == 1) {
if (liveNeighbors < 2 || liveNeighbors > 3) {
next[i][j] = 0;
} else {
next[i][j] = 1;
}
} else {
if (liveNeighbors == 3) {
next[i][j] = 1;
} else {
next[i][j] = 0;
}
}
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
board[i][j] = next[i][j];
}
}
}
}
```