aiaiask.com©

开花即结果 提问即答案

用Java写一个算法:输入一个二维数组(矩阵),找出矩阵中所有零元素所在的行和列,并将这些行、列上面的其他元素都修改为0
原始问题:

用Java写一个算法:输入一个二维数组(矩阵),找出矩阵中所有零元素所在的行和列,并将这些行、列上面的其他元素都修改为0

以下是用Java编写的算法,实现了输入一个二维数组,找出矩阵中所有零元素所在的行和列,并将这些行、列上的其他元素都修改为0:

public class ZeroMatrix {
    public static void main(String[] args) {
        int[][] matrix = {
            {1, 2, 3},
            {4, 0, 6},
            {7, 8, 9}
        };
        
        System.out.println("原始矩阵:");
        printMatrix(matrix);
        
        setZeroes(matrix);
        
        System.out.println("修改后的矩阵:");
        printMatrix(matrix);
    }
    
    public static void setZeroes(int[][] matrix) {
        int rows = matrix.length;
        int cols = matrix[0].length;
        
        boolean[] zeroRows = new boolean[rows];
        boolean[] zeroCols = new boolean[cols];
        
        // 找出所有零元素所在的行和列
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                if (matrix[i][j] == 0) {
                    zeroRows[i] = true;
                    zeroCols[j] = true;
                }
            }
        }
        
        // 将对应行上的元素修改为0
        for (int i = 0; i < rows; i++) {
            if (zeroRows[i]) {
                for (int j = 0; j < cols; j++) {
                    matrix[i][j] = 0;
                }
            }
        }
        
        // 将对应列上的元素修改为0
        for (int j = 0; j < cols; j++) {
            if (zeroCols[j]) {
                for (int i = 0; i < rows; i++) {
                    matrix[i][j] = 0;
                }
            }
        }
    }
    
    public static void printMatrix(int[][] matrix) {
        for (int[] row : matrix) {
            for (int num : row) {
                System.out.print(num + " ");
            }
            System.out.println();
        }
        System.out.println();
    }
}

这个算法首先创建了两个布尔数组 zeroRows 和 zeroCols,用于记录矩阵中零元素所在的行和列。然后,通过遍历整个矩阵,找出所有零元素的位置,并将对应的 zeroRows 和 zeroCols 的元素设为 true。接下来,再次遍历矩阵,将对应行和列上的元素修改为0。最后,通过调用 printMatrix 方法打印修改后的矩阵。

希望这个算法能满足你的需求。如果有任何问题,请随时提问。

用Java写一个算法:输入一个二维数组(矩阵),找出矩阵中所有零元素所在的行和列,并将这些行、列上面的其他元素都修改为0
https://www.aiaiask.com/ask/44269.html
AI / 模型DeepSeek
时间 / DATEAugust 10, 2023, 2:52 PM
语言zh-CN
IP / 区域美国