【发布时间】:2015-03-22 04:21:10
【问题描述】:
打印大小为 m * n 的矩阵中的所有元素组合
示例:
1 3 5
2 6 7
预期输出:
1 , 3 , 5
1 , 3 , 7
1 , 6 , 5
1 , 6 , 7
2 , 3 , 5
2 , 3 , 7
2 , 6 , 5
2 , 6 , 7
规则:
- 每个组合都从矩阵的左侧开始并向右进行。但它可能会切换行。
- 每个组合的元素数应等于列数。
- 一个组合不能有来自同一列的元素出现两次。
-
列数和行数可能不同。所以解决方案必须是通用的。
import java.util.Scanner; class Combination { public static void main(String args[]) { int row, col, i, j; Scanner in = new Scanner(System.in); System.out.println("Enter the number of rows and columns of matrix:\n"); row = in.nextInt(); col = in.nextInt(); int first[][] = new int[row][col]; System.out.println("Enter the elements if matric m*n:\n"); for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { first[i][j] = in.nextInt(); } } System.out.println("Matrix:\n"); for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { System.out.print(first[i][j] + "\t"); } System.out.println(); } // Final Logic from here... System.out.println("\nOut Matrix:\n"); for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { for (int k = 0; k < 2; k++) { System.out.println(first[i][0] + "," + first[j][1] + "," + first[k][2]+"\n"); } } } /* while (i < 2) { j = 0; while (j < 2) { k = 0; while (k < 2) { System.out.println(first[i][0] + "," + first[j][1] + "," + first[k][2]); k++; } j++; } i++; }*/ in.close(); } }
在此先感谢......
【问题讨论】:
-
你不能动态执行它是什么意思,但它适用于特定输入?我看到用户在程序开始时输入了行数和列数,那你还想动态化什么?
-
它适用于上面给定的输入,我在最终逻辑中对 2 的位置进行了一些更改,将其替换为 row ,但随后我给它输入 2*4 矩阵它不起作用....
-
谢谢。组合的显示顺序重要吗?为了说明我的问题。对于您的预期输出示例,如果元素: 2 、 6 、 7 出现在输出的顶部或中间,它仍然是一个有效的答案吗?
-
是的,没问题,它应该只打印上述组合......我正在尝试一个通用代码提前谢谢.....