Java实现矩阵列翻转,获取行全为1的最大行数(DFS)

发布时间:2024年01月17日

1、给定一个N*M的矩阵,3<=N<=100,3<=M<=20,值为0,1随机分布

2、给定一个K,1<=K<=M

3、翻转矩阵的列K次,即某一列的所有值0转1,1转0,必须用满K次

4、如何翻转可以得到矩阵中行全为1的最大行数,输出这个最大值。

import java.util.Random;

public class MatrixFlip {

    public static void main(String[] args) {
        int N = 5; // 你的N值,可以根据需要修改
        int M = 5; // 你的M值,可以根据需要修改
        int K = 2; // 你的K值,可以根据需要修改

        int[][] matrix = generateRandomMatrix(N, M);
        System.out.println("原始矩阵:");
        printMatrix(matrix);

        flipMatrixColumns(matrix, K);
        System.out.println("\n翻转后的矩阵:");
        printMatrix(matrix);

        int maxOnes = findMaxOnesRow(matrix);
        System.out.println("\n矩阵中行全为1的最大行数:" + maxOnes);
    }

    private static int[][] generateRandomMatrix(int N, int M) {
        int[][] matrix = new int[N][M];
        Random random = new Random();

        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                matrix[i][j] = random.nextInt(2);
            }
        }

        return matrix;
    }

    private static void flipMatrixColumns(int[][] matrix, int K) {
        int N = matrix.length;
        int M = matrix[0].length;

        for (int k = 0; k < K; k++) {
            int col = k % M;

            for (int i = 0; i < N; i++) {
                matrix[i][col] = 1 - matrix[i][col];
            }
        }
    }

    private static int findMaxOnesRow(int[][] matrix) {
        int maxOnes = 0;

        for (int[] row : matrix) {
            int onesCount = 0;
            for (int value : row) {
                if (value == 1) {
                    onesCount++;
                }
            }
            maxOnes = Math.max(maxOnes, onesCount);
        }

        return maxOnes;
    }

    private static void printMatrix(int[][] matrix) {
        for (int[] row : matrix) {
            for (int value : row) {
                System.out.print(value + " ");
            }
            System.out.println();
        }
    }
}

文章来源:https://blog.csdn.net/m0_67247641/article/details/135660712
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。