用java实现矩阵中出现最多1的行和列(只有0,1)

问题描述

编写一个程序,在一个4*4的矩阵中随机填入0和1,打印该矩阵,找到第一个具有最多1的行和列。

代码
public class Program10 {
	public static void main(String[] args) {
		int[][] a = new int[4][4];
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a.length; j++) {
				a[i][j] = (int) (Math.random() * 2);
				System.out.print(a[i][j]);
			}
			System.out.println();
		}
		System.out.println("The largest row index:" + max(a, true));
		System.out.println("the largest column index:" + max(a, false));

	}

	private static int max(int[][] array, boolean rowCol) {
		int max;
		int temp = 0, cou = -1;
		for (int i = 0; i < array.length; i++) {
			max = 0;
			for (int j = 0; j < array[i].length; j++) {
				int index = (rowCol) ? array[i][j] : array[j][i];
				if (index == 1)
					max++;
			}
			if (temp < max) {
				temp = max;
				cou = i;
			}
		}
		return cou;
	}
}

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ```java import java.util.Random; public class Matrix { public static void main(String[] args) { int[][] matrix = new int[4][4]; Random random = new Random(); // 随机填充矩阵 for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { matrix[i][j] = random.nextInt(2); } } // 打印矩阵 for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(); } int maxRow = 0; // 最多1的 int maxCol = 0; // 最多1的 int maxCount = 0; // 最多1的个数 // 找到最多1的 for (int i = 0; i < matrix.length; i++) { int count = 0; // 当前1的个数 for (int j = 0; j < matrix[0].length; j++) { if (matrix[i][j] == 1) { count++; } } if (count > maxCount) { maxCount = count; maxRow = i; } } for (int j = 0; j < matrix[0].length; j++) { int count = 0; // 当前1的个数 for (int i = 0; i < matrix.length; i++) { if (matrix[i][j] == 1) { count++; } } if (count > maxCount) { maxCount = count; maxCol = j; } } System.out.println("最多1的:" + maxRow); System.out.println("最多1的:" + maxCol); } } ``` ### 回答2: 首先,我们可以编写一个程序来生成一个44矩阵,并将数据填入0和1。这里我们可以使用随机数生成器来生成0和1,并使用嵌套循环来填充矩阵。 接下来,在打印矩阵的同时,我们可以统计每和每1的个数,并记录最多1的的索引。 最后,我们输出具有最多1的的索引。下面是一个示例程序的实现: ``` import java.util.Random; public class MaxOnes { public static void main(String[] args) { int[][] matrix = new int[4][4]; Random random = new Random(); int maxRow = -1; // 最多1的索引 int maxCol = -1; // 最多1的索引 int maxCount = 0; // 最多的1的个数 // 填充矩阵并统计最多的1个数 for (int i = 0; i < 4; i++) { int count = 0; // 当前的1的个数 for (int j = 0; j < 4; j++) { matrix[i][j] = random.nextInt(2); count += matrix[i][j]; } // 更新最多1的索引和个数 if (count > maxCount) { maxCount = count; maxRow = i; } } // 统计每的1的个数并更新最多的索引 for (int j = 0; j < 4; j++) { int count = 0; // 当前的1的个数 for (int i = 0; i < 4; i++) { count += matrix[i][j]; } // 更新最多1的索引 if (count > maxCount) { maxCount = count; maxCol = j; } } // 打印矩阵 for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(); } System.out.println("具有最多1的索引: " + maxRow); System.out.println("具有最多1的索引: " + maxCol); } } ``` 运上述程序,将会输出一个44矩阵,并找到具有最多1的的索引。 ### 回答3: 下面是一个如何编写Java程序来实现你的要求的示例: ```java public class MatrixExample { public static void main(String[] args) { int[][] matrix = generateMatrix(4); printMatrix(matrix); int maxRow = findMaxRow(matrix); int maxCol = findMaxColumn(matrix); System.out.println("具有最多1的: " + maxRow); System.out.println("具有最多1的: " + maxCol); } // 生成一个4*4的矩阵,数据填入0和1 public static int[][] generateMatrix(int size) { int[][] matrix = new int[size][size]; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { matrix[i][j] = (int) (Math.random() * 2); } } return matrix; } // 打印矩阵 public static void printMatrix(int[][] matrix) { for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(); } } // 找到具有最多1的 public static int findMaxRow(int[][] matrix) { int maxRow = 0; int maxOnes = 0; for (int i = 0; i < matrix.length; i++) { int ones = 0; for (int j = 0; j < matrix[0].length; j++) { if (matrix[i][j] == 1) { ones++; } } if (ones > maxOnes) { maxOnes = ones; maxRow = i; } } return maxRow; } // 找到具有最多1的 public static int findMaxColumn(int[][] matrix) { int maxCol = 0; int maxOnes = 0; for (int j = 0; j < matrix[0].length; j++) { int ones = 0; for (int i = 0; i < matrix.length; i++) { if (matrix[i][j] == 1) { ones++; } } if (ones > maxOnes) { maxOnes = ones; maxCol = j; } } return maxCol; } } ``` 上述程序首先生成一个4x4的矩阵,并将元素随机填为0或1。然后打印出该矩阵。接下来,通过遍历矩阵找到具有最多1的。最后,输出找到的最多1的。 希望这可以帮助到你!如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值