题库 软件开发 题目列表 【编程题】 # 背景: “康威生命游戏”由一个二维...
问答题
【编程题】
# 背景:
“康威生命游戏”由一个二维的平面网格组成。网格内的每个格子都是一个细胞,包括“存活”和“死亡”两种状态。每个细胞的生存状态由周围最多8个邻居的状态决定。详细规则如下:
* 当前细胞为存活状态时,当周围的存活细胞低于2个时(不包含2个),该细胞变成死亡状态。(模拟生命数量稀少)
* 当前细胞为存活状态时,当周围有2个或3个存活细胞时,该细胞保持原样。
* 当前细胞为存活状态时,当周围有超过3个存活细胞时,该细胞变成死亡状态。(模拟生命数量过多)
* 当前细胞为死亡状态时,当周围有3个存活细胞时,该细胞变成存活状态。(模拟繁殖)

# 任务:
* 实现函数:`private int getNextVal(int[][] arr, int i, int j)`,返回某个元素的生存状态。
* 实现函数:`private int countLivingNeighbors(int[][] arr, int i, int j)`,计算某细胞的存活邻居数量。

初始代码:
public class ShowMeBug {
    public final int[][] arr;

    public ShowMeBug(int[][] arr) {
        this.arr = arr;
    }

    public static void main(String[] args) {
        int[][] arr = new int[][]{
                {0, 0, 0},
                {1, 1, 1},
                {0, 0, 0}
        };

        final ShowMeBug showMeBug = new ShowMeBug(arr);

        showMeBug.updateNextState(arr);
        showMeBug.printState();
    }

    /**
     * 输出当前生存状态到控制台
     *
     */
    public void printState() {
        int M = arr.length;
        int N = arr[0].length;
        for (int i = 0; i < M; i++) {
            for (int j = 0; j < N; j++) {
                System.out.print(arr[i][j]);
                System.out.print("" "");
            }
            System.out.println();
        }
    }

    /**
     * 更新arr下个tick的生存状态
     *
     * @param arr 当前状态下的数组
     */
    public void updateNextState(int[][] arr) {
        int M = arr.length;
        int N = arr[0].length;
        for (int i = 0; i < M; i++) {
            for (int j = 0; j < N; j++) {
                arr[i][j] = getNextVal(arr, i, j);
            }
        }
    }

    /**
     * 计算某细胞下个tick的状态
     *
     * @param arr 当前状态下的数组
     * @param i   行索引
     * @param j   列索引
     * @return 生存返回1,否则返回0
     */
    private int getNextVal(int[][] arr, int i, int j) {
        int nextVal = 0;
        //TODO:请完善该函数,要求:需要调用countLivingNeighbors
        return nextVal;
    }

    /**
     * 计算某细胞的存活邻居数量
     *
     * @param arr 当前状态下的数组
     * @param i   行索引
     * @param j   列索引
     * @return 该元素存活的邻居数量
     */
    private int countLivingNeighbors(int[][] arr, int i, int j) {
        int count = 0;
        //TODO:请完善该函数
        return count;
    }
}
题目信息
校招真题
-
正确率
0
评论
43
点击