java - Java - 获取二维数组中的所有值组合
问题描述
此代码填充二维数组中所有可能的值组合,并且在此示例中运行良好。但是,正如您所看到的,我硬编码了适用于具有这些维度的数组的索引号,并“手动”嵌套了具有这些维度的数组的 for 循环......
必须有某种方法来修改此代码,以便您可以将任何int[][]
作为参数传递给方法,而不管尺寸如何,对吗?
巧妙地使用递归或使用.length
属性。目前有点卡住了,看不到如何正确创建正确的嵌套和流程。
public class Combinator {
static int[][] arr2D = new int[2][2];
static int[] values = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static int n;
public static void combine() {
for (int i: values) {
arr2D[0][0] = i;
for (int j: values) {
arr2D[0][1] = j;
for (int k: values) {
arr2D[1][0] = k;
for (int l: values) {
arr2D[1][1] = l;
printArr2D();
}
}
}
}
}
private static void printArr2D() {
for (int y = 0; y < arr2D.length; y++) {
for (int x = 0; x < arr2D[y].length; x++) {
System.out.print(arr2D[y][x] + " ");
if (y == arr2D.length - 1 && x == arr2D[y].length - 1) {
System.out.print("printed out for the " + ++n + "th time.");
}
}
System.out.println();
}
System.out.println();
}
public static void main(String[] args) {
combine();
}
}
解决方案
好像你想要这样的东西:
public static void printCombinations2D(int width, int height, int... values) {
int[][] idx = new int[height][width];
LOOP: for (;;) {
print2D(values, idx);
for (int y = height - 1; y >= 0; y--) {
for (int x = width - 1; x >= 0; x--) {
if (++idx[y][x] < values.length)
continue LOOP;
idx[y][x] = 0;
}
}
break;
}
}
private static void print2D(int[] values, int[][] idx) {
for (int[] row : idx) {
for (int i : row)
System.out.print(values[i] + " ");
System.out.println();
}
System.out.println();
}
然后你这样称呼它:
printCombinations2D(2, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
或者,如果您愿意:
int[] values = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
printCombinations2D(2, 2, values);
如果您想要所有组合的 3x5 矩阵(请注意:即 1,000,000,000,000,000 个矩阵):
printCombinations2D(3, 5, 0,1,2,3,4,5,6,7,8,9);
测试
printCombinations2D(3, 2, 7,8,9);
输出
7 7 7
7 7 7
7 7 7
7 7 8
7 7 7
7 7 9
7 7 7
7 8 7
7 7 7
7 8 8
7 7 7
7 8 9
7 7 7
7 9 7
7 7 7
7 9 8
7 7 7
7 9 9
7 7 7
8 7 7
7 7 7
8 7 8
7 7 7
8 7 9
7 7 7
8 8 7
7 7 7
8 8 8
7 7 7
8 8 9
7 7 7
8 9 7
7 7 7
8 9 8
7 7 7
8 9 9
7 7 7
9 7 7
7 7 7
9 7 8
7 7 7
9 7 9
7 7 7
9 8 7
7 7 7
9 8 8
7 7 7
9 8 9
7 7 7
9 9 7
7 7 7
9 9 8
7 7 7
9 9 9
7 7 8
7 7 7
7 7 8
7 7 8
7 7 8
7 7 9
7 7 8
7 8 7
7 7 8
7 8 8
7 7 8
7 8 9
7 7 8
7 9 7
7 7 8
7 9 8
7 7 8
7 9 9
7 7 8
8 7 7
7 7 8
8 7 8
7 7 8
8 7 9
7 7 8
8 8 7
7 7 8
8 8 8
7 7 8
8 8 9
7 7 8
8 9 7
7 7 8
8 9 8
7 7 8
8 9 9
7 7 8
9 7 7
7 7 8
9 7 8
7 7 8
9 7 9
7 7 8
9 8 7
7 7 8
9 8 8
7 7 8
9 8 9
7 7 8
9 9 7
7 7 8
9 9 8
7 7 8
9 9 9
7 7 9
7 7 7
7 7 9
7 7 8
7 7 9
7 7 9
7 7 9
7 8 7
7 7 9
7 8 8
7 7 9
7 8 9
7 7 9
7 9 7
7 7 9
7 9 8
7 7 9
7 9 9
7 7 9
8 7 7
7 7 9
8 7 8
7 7 9
8 7 9
7 7 9
8 8 7
7 7 9
8 8 8
7 7 9
8 8 9
7 7 9
8 9 7
7 7 9
8 9 8
7 7 9
8 9 9
7 7 9
9 7 7
7 7 9
9 7 8
7 7 9
9 7 9
7 7 9
9 8 7
7 7 9
9 8 8
7 7 9
9 8 9
7 7 9
9 9 7
7 7 9
9 9 8
7 7 9
9 9 9
7 8 7
7 7 7
7 8 7
7 7 8
7 8 7
7 7 9
7 8 7
7 8 7
7 8 7
7 8 8
7 8 7
7 8 9
7 8 7
7 9 7
7 8 7
7 9 8
7 8 7
7 9 9
7 8 7
8 7 7
7 8 7
8 7 8
7 8 7
8 7 9
7 8 7
8 8 7
7 8 7
8 8 8
7 8 7
8 8 9
7 8 7
8 9 7
7 8 7
8 9 8
7 8 7
8 9 9
7 8 7
9 7 7
7 8 7
9 7 8
7 8 7
9 7 9
7 8 7
9 8 7
7 8 7
9 8 8
7 8 7
9 8 9
7 8 7
9 9 7
7 8 7
9 9 8
7 8 7
9 9 9
7 8 8
7 7 7
7 8 8
7 7 8
7 8 8
7 7 9
7 8 8
7 8 7
7 8 8
7 8 8
7 8 8
7 8 9
7 8 8
7 9 7
7 8 8
7 9 8
7 8 8
7 9 9
7 8 8
8 7 7
7 8 8
8 7 8
7 8 8
8 7 9
7 8 8
8 8 7
7 8 8
8 8 8
7 8 8
8 8 9
7 8 8
8 9 7
7 8 8
8 9 8
7 8 8
8 9 9
7 8 8
9 7 7
7 8 8
9 7 8
7 8 8
9 7 9
7 8 8
9 8 7
7 8 8
9 8 8
7 8 8
9 8 9
7 8 8
9 9 7
7 8 8
9 9 8
7 8 8
9 9 9
7 8 9
7 7 7
7 8 9
7 7 8
7 8 9
7 7 9
7 8 9
7 8 7
7 8 9
7 8 8
7 8 9
7 8 9
7 8 9
7 9 7
7 8 9
7 9 8
7 8 9
7 9 9
7 8 9
8 7 7
7 8 9
8 7 8
7 8 9
8 7 9
7 8 9
8 8 7
7 8 9
8 8 8
7 8 9
8 8 9
7 8 9
8 9 7
7 8 9
8 9 8
7 8 9
8 9 9
7 8 9
9 7 7
7 8 9
9 7 8
7 8 9
9 7 9
7 8 9
9 8 7
7 8 9
9 8 8
7 8 9
9 8 9
7 8 9
9 9 7
7 8 9
9 9 8
7 8 9
9 9 9
7 9 7
7 7 7
7 9 7
7 7 8
7 9 7
7 7 9
7 9 7
7 8 7
7 9 7
7 8 8
7 9 7
7 8 9
7 9 7
7 9 7
7 9 7
7 9 8
7 9 7
7 9 9
7 9 7
8 7 7
7 9 7
8 7 8
7 9 7
8 7 9
7 9 7
8 8 7
7 9 7
8 8 8
7 9 7
8 8 9
7 9 7
8 9 7
7 9 7
8 9 8
7 9 7
8 9 9
7 9 7
9 7 7
7 9 7
9 7 8
7 9 7
9 7 9
7 9 7
9 8 7
7 9 7
9 8 8
7 9 7
9 8 9
7 9 7
9 9 7
7 9 7
9 9 8
7 9 7
9 9 9
7 9 8
7 7 7
7 9 8
7 7 8
7 9 8
7 7 9
7 9 8
7 8 7
7 9 8
7 8 8
7 9 8
7 8 9
7 9 8
7 9 7
7 9 8
7 9 8
7 9 8
7 9 9
7 9 8
8 7 7
7 9 8
8 7 8
7 9 8
8 7 9
7 9 8
8 8 7
7 9 8
8 8 8
7 9 8
8 8 9
7 9 8
8 9 7
7 9 8
8 9 8
7 9 8
8 9 9
7 9 8
9 7 7
7 9 8
9 7 8
7 9 8
9 7 9
7 9 8
9 8 7
7 9 8
9 8 8
7 9 8
9 8 9
7 9 8
9 9 7
7 9 8
9 9 8
7 9 8
9 9 9
7 9 9
7 7 7
7 9 9
7 7 8
7 9 9
7 7 9
7 9 9
7 8 7
7 9 9
7 8 8
7 9 9
7 8 9
7 9 9
7 9 7
7 9 9
7 9 8
7 9 9
7 9 9
7 9 9
8 7 7
7 9 9
8 7 8
7 9 9
8 7 9
7 9 9
8 8 7
7 9 9
8 8 8
7 9 9
8 8 9
7 9 9
8 9 7
7 9 9
8 9 8
7 9 9
8 9 9
7 9 9
9 7 7
7 9 9
9 7 8
7 9 9
9 7 9
7 9 9
9 8 7
7 9 9
9 8 8
7 9 9
9 8 9
7 9 9
9 9 7
7 9 9
9 9 8
7 9 9
9 9 9
8 7 7
7 7 7
8 7 7
7 7 8
8 7 7
7 7 9
8 7 7
7 8 7
8 7 7
7 8 8
8 7 7
7 8 9
8 7 7
7 9 7
8 7 7
7 9 8
8 7 7
7 9 9
8 7 7
8 7 7
8 7 7
8 7 8
8 7 7
8 7 9
8 7 7
8 8 7
8 7 7
8 8 8
8 7 7
8 8 9
8 7 7
8 9 7
8 7 7
8 9 8
8 7 7
8 9 9
8 7 7
9 7 7
8 7 7
9 7 8
8 7 7
9 7 9
8 7 7
9 8 7
8 7 7
9 8 8
8 7 7
9 8 9
8 7 7
9 9 7
8 7 7
9 9 8
8 7 7
9 9 9
8 7 8
7 7 7
8 7 8
7 7 8
8 7 8
7 7 9
8 7 8
7 8 7
8 7 8
7 8 8
8 7 8
7 8 9
8 7 8
7 9 7
8 7 8
7 9 8
8 7 8
7 9 9
8 7 8
8 7 7
8 7 8
8 7 8
8 7 8
8 7 9
8 7 8
8 8 7
8 7 8
8 8 8
8 7 8
8 8 9
8 7 8
8 9 7
8 7 8
8 9 8
8 7 8
8 9 9
8 7 8
9 7 7
8 7 8
9 7 8
8 7 8
9 7 9
8 7 8
9 8 7
8 7 8
9 8 8
8 7 8
9 8 9
8 7 8
9 9 7
8 7 8
9 9 8
8 7 8
9 9 9
8 7 9
7 7 7
8 7 9
7 7 8
8 7 9
7 7 9
8 7 9
7 8 7
8 7 9
7 8 8
8 7 9
7 8 9
8 7 9
7 9 7
8 7 9
7 9 8
8 7 9
7 9 9
8 7 9
8 7 7
8 7 9
8 7 8
8 7 9
8 7 9
8 7 9
8 8 7
8 7 9
8 8 8
8 7 9
8 8 9
8 7 9
8 9 7
8 7 9
8 9 8
8 7 9
8 9 9
8 7 9
9 7 7
8 7 9
9 7 8
8 7 9
9 7 9
8 7 9
9 8 7
8 7 9
9 8 8
8 7 9
9 8 9
8 7 9
9 9 7
8 7 9
9 9 8
8 7 9
9 9 9
8 8 7
7 7 7
8 8 7
7 7 8
8 8 7
7 7 9
8 8 7
7 8 7
8 8 7
7 8 8
8 8 7
7 8 9
8 8 7
7 9 7
8 8 7
7 9 8
8 8 7
7 9 9
8 8 7
8 7 7
8 8 7
8 7 8
8 8 7
8 7 9
8 8 7
8 8 7
8 8 7
8 8 8
8 8 7
8 8 9
8 8 7
8 9 7
8 8 7
8 9 8
8 8 7
8 9 9
8 8 7
9 7 7
8 8 7
9 7 8
8 8 7
9 7 9
8 8 7
9 8 7
8 8 7
9 8 8
8 8 7
9 8 9
8 8 7
9 9 7
8 8 7
9 9 8
8 8 7
9 9 9
8 8 8
7 7 7
8 8 8
7 7 8
8 8 8
7 7 9
8 8 8
7 8 7
8 8 8
7 8 8
8 8 8
7 8 9
8 8 8
7 9 7
8 8 8
7 9 8
8 8 8
7 9 9
8 8 8
8 7 7
8 8 8
8 7 8
8 8 8
8 7 9
8 8 8
8 8 7
8 8 8
8 8 8
8 8 8
8 8 9
8 8 8
8 9 7
8 8 8
8 9 8
8 8 8
8 9 9
8 8 8
9 7 7
8 8 8
9 7 8
8 8 8
9 7 9
8 8 8
9 8 7
8 8 8
9 8 8
8 8 8
9 8 9
8 8 8
9 9 7
8 8 8
9 9 8
8 8 8
9 9 9
8 8 9
7 7 7
8 8 9
7 7 8
8 8 9
7 7 9
8 8 9
7 8 7
8 8 9
7 8 8
8 8 9
7 8 9
8 8 9
7 9 7
8 8 9
7 9 8
8 8 9
7 9 9
8 8 9
8 7 7
8 8 9
8 7 8
8 8 9
8 7 9
8 8 9
8 8 7
8 8 9
8 8 8
8 8 9
8 8 9
8 8 9
8 9 7
8 8 9
8 9 8
8 8 9
8 9 9
8 8 9
9 7 7
8 8 9
9 7 8
8 8 9
9 7 9
8 8 9
9 8 7
8 8 9
9 8 8
8 8 9
9 8 9
8 8 9
9 9 7
8 8 9
9 9 8
8 8 9
9 9 9
8 9 7
7 7 7
8 9 7
7 7 8
8 9 7
7 7 9
8 9 7
7 8 7
8 9 7
7 8 8
8 9 7
7 8 9
8 9 7
7 9 7
8 9 7
7 9 8
8 9 7
7 9 9
8 9 7
8 7 7
8 9 7
8 7 8
8 9 7
8 7 9
8 9 7
8 8 7
8 9 7
8 8 8
8 9 7
8 8 9
8 9 7
8 9 7
8 9 7
8 9 8
8 9 7
8 9 9
8 9 7
9 7 7
8 9 7
9 7 8
8 9 7
9 7 9
8 9 7
9 8 7
8 9 7
9 8 8
8 9 7
9 8 9
8 9 7
9 9 7
8 9 7
9 9 8
8 9 7
9 9 9
8 9 8
7 7 7
8 9 8
7 7 8
8 9 8
7 7 9
8 9 8
7 8 7
8 9 8
7 8 8
8 9 8
7 8 9
8 9 8
7 9 7
8 9 8
7 9 8
8 9 8
7 9 9
8 9 8
8 7 7
8 9 8
8 7 8
8 9 8
8 7 9
8 9 8
8 8 7
8 9 8
8 8 8
8 9 8
8 8 9
8 9 8
8 9 7
8 9 8
8 9 8
8 9 8
8 9 9
8 9 8
9 7 7
8 9 8
9 7 8
8 9 8
9 7 9
8 9 8
9 8 7
8 9 8
9 8 8
8 9 8
9 8 9
8 9 8
9 9 7
8 9 8
9 9 8
8 9 8
9 9 9
8 9 9
7 7 7
8 9 9
7 7 8
8 9 9
7 7 9
8 9 9
7 8 7
8 9 9
7 8 8
8 9 9
7 8 9
8 9 9
7 9 7
8 9 9
7 9 8
8 9 9
7 9 9
8 9 9
8 7 7
8 9 9
8 7 8
8 9 9
8 7 9
8 9 9
8 8 7
8 9 9
8 8 8
8 9 9
8 8 9
8 9 9
8 9 7
8 9 9
8 9 8
8 9 9
8 9 9
8 9 9
9 7 7
8 9 9
9 7 8
8 9 9
9 7 9
8 9 9
9 8 7
8 9 9
9 8 8
8 9 9
9 8 9
8 9 9
9 9 7
8 9 9
9 9 8
8 9 9
9 9 9
9 7 7
7 7 7
9 7 7
7 7 8
9 7 7
7 7 9
9 7 7
7 8 7
9 7 7
7 8 8
9 7 7
7 8 9
9 7 7
7 9 7
9 7 7
7 9 8
9 7 7
7 9 9
9 7 7
8 7 7
9 7 7
8 7 8
9 7 7
8 7 9
9 7 7
8 8 7
9 7 7
8 8 8
9 7 7
8 8 9
9 7 7
8 9 7
9 7 7
8 9 8
9 7 7
8 9 9
9 7 7
9 7 7
9 7 7
9 7 8
9 7 7
9 7 9
9 7 7
9 8 7
9 7 7
9 8 8
9 7 7
9 8 9
9 7 7
9 9 7
9 7 7
9 9 8
9 7 7
9 9 9
9 7 8
7 7 7
9 7 8
7 7 8
9 7 8
7 7 9
9 7 8
7 8 7
9 7 8
7 8 8
9 7 8
7 8 9
9 7 8
7 9 7
9 7 8
7 9 8
9 7 8
7 9 9
9 7 8
8 7 7
9 7 8
8 7 8
9 7 8
8 7 9
9 7 8
8 8 7
9 7 8
8 8 8
9 7 8
8 8 9
9 7 8
8 9 7
9 7 8
8 9 8
9 7 8
8 9 9
9 7 8
9 7 7
9 7 8
9 7 8
9 7 8
9 7 9
9 7 8
9 8 7
9 7 8
9 8 8
9 7 8
9 8 9
9 7 8
9 9 7
9 7 8
9 9 8
9 7 8
9 9 9
9 7 9
7 7 7
9 7 9
7 7 8
9 7 9
7 7 9
9 7 9
7 8 7
9 7 9
7 8 8
9 7 9
7 8 9
9 7 9
7 9 7
9 7 9
7 9 8
9 7 9
7 9 9
9 7 9
8 7 7
9 7 9
8 7 8
9 7 9
8 7 9
9 7 9
8 8 7
9 7 9
8 8 8
9 7 9
8 8 9
9 7 9
8 9 7
9 7 9
8 9 8
9 7 9
8 9 9
9 7 9
9 7 7
9 7 9
9 7 8
9 7 9
9 7 9
9 7 9
9 8 7
9 7 9
9 8 8
9 7 9
9 8 9
9 7 9
9 9 7
9 7 9
9 9 8
9 7 9
9 9 9
9 8 7
7 7 7
9 8 7
7 7 8
9 8 7
7 7 9
9 8 7
7 8 7
9 8 7
7 8 8
9 8 7
7 8 9
9 8 7
7 9 7
9 8 7
7 9 8
9 8 7
7 9 9
9 8 7
8 7 7
9 8 7
8 7 8
9 8 7
8 7 9
9 8 7
8 8 7
9 8 7
8 8 8
9 8 7
8 8 9
9 8 7
8 9 7
9 8 7
8 9 8
9 8 7
8 9 9
9 8 7
9 7 7
9 8 7
9 7 8
9 8 7
9 7 9
9 8 7
9 8 7
9 8 7
9 8 8
9 8 7
9 8 9
9 8 7
9 9 7
9 8 7
9 9 8
9 8 7
9 9 9
9 8 8
7 7 7
9 8 8
7 7 8
9 8 8
7 7 9
9 8 8
7 8 7
9 8 8
7 8 8
9 8 8
7 8 9
9 8 8
7 9 7
9 8 8
7 9 8
9 8 8
7 9 9
9 8 8
8 7 7
9 8 8
8 7 8
9 8 8
8 7 9
9 8 8
8 8 7
9 8 8
8 8 8
9 8 8
8 8 9
9 8 8
8 9 7
9 8 8
8 9 8
9 8 8
8 9 9
9 8 8
9 7 7
9 8 8
9 7 8
9 8 8
9 7 9
9 8 8
9 8 7
9 8 8
9 8 8
9 8 8
9 8 9
9 8 8
9 9 7
9 8 8
9 9 8
9 8 8
9 9 9
9 8 9
7 7 7
9 8 9
7 7 8
9 8 9
7 7 9
9 8 9
7 8 7
9 8 9
7 8 8
9 8 9
7 8 9
9 8 9
7 9 7
9 8 9
7 9 8
9 8 9
7 9 9
9 8 9
8 7 7
9 8 9
8 7 8
9 8 9
8 7 9
9 8 9
8 8 7
9 8 9
8 8 8
9 8 9
8 8 9
9 8 9
8 9 7
9 8 9
8 9 8
9 8 9
8 9 9
9 8 9
9 7 7
9 8 9
9 7 8
9 8 9
9 7 9
9 8 9
9 8 7
9 8 9
9 8 8
9 8 9
9 8 9
9 8 9
9 9 7
9 8 9
9 9 8
9 8 9
9 9 9
9 9 7
7 7 7
9 9 7
7 7 8
9 9 7
7 7 9
9 9 7
7 8 7
9 9 7
7 8 8
9 9 7
7 8 9
9 9 7
7 9 7
9 9 7
7 9 8
9 9 7
7 9 9
9 9 7
8 7 7
9 9 7
8 7 8
9 9 7
8 7 9
9 9 7
8 8 7
9 9 7
8 8 8
9 9 7
8 8 9
9 9 7
8 9 7
9 9 7
8 9 8
9 9 7
8 9 9
9 9 7
9 7 7
9 9 7
9 7 8
9 9 7
9 7 9
9 9 7
9 8 7
9 9 7
9 8 8
9 9 7
9 8 9
9 9 7
9 9 7
9 9 7
9 9 8
9 9 7
9 9 9
9 9 8
7 7 7
9 9 8
7 7 8
9 9 8
7 7 9
9 9 8
7 8 7
9 9 8
7 8 8
9 9 8
7 8 9
9 9 8
7 9 7
9 9 8
7 9 8
9 9 8
7 9 9
9 9 8
8 7 7
9 9 8
8 7 8
9 9 8
8 7 9
9 9 8
8 8 7
9 9 8
8 8 8
9 9 8
8 8 9
9 9 8
8 9 7
9 9 8
8 9 8
9 9 8
8 9 9
9 9 8
9 7 7
9 9 8
9 7 8
9 9 8
9 7 9
9 9 8
9 8 7
9 9 8
9 8 8
9 9 8
9 8 9
9 9 8
9 9 7
9 9 8
9 9 8
9 9 8
9 9 9
9 9 9
7 7 7
9 9 9
7 7 8
9 9 9
7 7 9
9 9 9
7 8 7
9 9 9
7 8 8
9 9 9
7 8 9
9 9 9
7 9 7
9 9 9
7 9 8
9 9 9
7 9 9
9 9 9
8 7 7
9 9 9
8 7 8
9 9 9
8 7 9
9 9 9
8 8 7
9 9 9
8 8 8
9 9 9
8 8 9
9 9 9
8 9 7
9 9 9
8 9 8
9 9 9
8 9 9
9 9 9
9 7 7
9 9 9
9 7 8
9 9 9
9 7 9
9 9 9
9 8 7
9 9 9
9 8 8
9 9 9
9 8 9
9 9 9
9 9 7
9 9 9
9 9 8
9 9 9
9 9 9
推荐阅读
- mips - 您如何正确读取 MIPS 中的整数输入?
- android - 我的 android studio 预览等待构建永远完成
- mysql - 尝试在 mysql 和 Web 服务器之间建立连接,但在 Dockerfile 的帮助下出现错误
- d3.js - 当 y 值为 0 时,dc.js 中的折线图问题
- java - Base 64 编码问题。(意外的加号)
- ios - Swift 线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)
- node.js - 似乎无法在“连接”之外的命名空间中的 socketio 中接收来自客户端的事件
- git - 我可以将更改的文件添加到已合并的 gerrit 中吗?
- mysql - 在 MySQL 中同时插入的行的插入触发器出错之前?
- pandas - 获取某些熊猫数据框会导致循环语句