Java 查找数组索引
我肯定有一个CS术语来描述我试图完成的事情,但我不确定它是什么。我有三个数组,我们称它们为Java 查找数组索引,java,arrays,Java,Arrays,我肯定有一个CS术语来描述我试图完成的事情,但我不确定它是什么。我有三个数组,我们称它们为a,b,和c。我正在迭代所有可能的数组组合,这将是a*b*c迭代 我正在传递当前迭代的函数anint(例如iteration从0到a*b*c-1),以及a、b和c的长度。我希望该函数能够打印出索引的每个唯一排列,仅根据迭代计数和a、b和c的长度进行计算 这就是我现在拥有的: class Test { public static void printIndices(int i, int a, int
a
,b
,和c
。我正在迭代所有可能的数组组合,这将是a*b*c
迭代
我正在传递当前迭代的函数anint
(例如iteration
从0
到a*b*c-1
),以及a
、b
和c
的长度。我希望该函数能够打印出索引的每个唯一排列,仅根据迭代计数和a
、b
和c
的长度进行计算
这就是我现在拥有的:
class Test {
public static void printIndices(int i, int a, int b, int c) {
System.out.println(i%a + ", " + (i+1)%b + ", " + (i+2)%c);
}
public static void main(String[] args) {
int a[] = new int[2];
int b[] = new int[2];
int c[] = new int[3];
int iterations = a.length * b.length * c.length;
for (int i=0; i < iterations; i++){
printIndices(i, a.length, b.length, c.length);
}
}
}
正如你所看到的,有重复的。我希望输出为:
0, 0, 0
1, 0, 0
0, 1, 0
1, 1, 0
0, 0, 1
1, 0, 1
0, 1, 1
1, 1, 1
0, 0, 2
1, 0, 2
0, 1, 2
1, 1, 2
(顺序并不重要,只要每个排列都没有重复)
显然,我的输出行是错误的:
System.out.println(i%a + ", " + (i+1)%b + ", " + (i+2)%c);
什么是获得我想要的输出的正确操作
我知道这段代码看起来有点傻,而且根本不是我真正在做的事情,但它很好地说明了这一点。正如您正在查找的注释中所述 你的模块化算法几乎可以奏效。只需进行几次修改即可获得正确的结果:
System.out.println(i%a + ", " + (i/a)%b + ", " + (i/a/b)%c);
在线查看它的工作情况:如您要查找的评论中所述 你的模块化算法几乎可以奏效。只需进行几次修改即可获得正确的结果:
System.out.println(i%a + ", " + (i/a)%b + ", " + (i/a/b)%c);
在线查看它的工作情况:这叫做a。谢谢。我知道这一定有个词。这叫a。谢谢。我知道一定有个词来形容它。