【发布时间】:2016-02-01 13:31:00
【问题描述】:
在思考了很长时间如何制作一个从给定输入数组中输出所有可能组合的 Java 程序后,我终于想到了结合递归和迭代来实现。
我的代码输入一个 char 数组 {a,b,c} 并且应该给出所有可能的长度为 3 的数组的输出。
我的代码是-
public class Brute {
char[] val = new char[] { 'a', 'b', 'c' };
void work(char arr[], int i) {
for (int j = 0; j <= 2; j++) {
if (i <= 2) {
arr[i] = val[j];
}
while (i <= 2) {
i = i + 1;
if (i <= 2) {
work(arr, i);
System.out.println(new String(arr));
}
}
}
}
public static void main(String args[]) {
Brute b = new Brute();
char arr[] = new char[] { 'p', 'q', 'r' };
b.work(arr, 0);
}
}
输出是:
aaa
aaa
aaa
我不明白为什么它给了我这个输出而不是所有组合。
【问题讨论】:
-
为什么要将
arr初始化为{ 'p', 'q', 'r' },因为您要置换的数组实际上是{ 'a', 'b', 'c' }? -
仅用于调试目的,以便我知道 arr[] 实际上正在被修改。
标签: java arrays permutation combinatorics