我正在尝试插入字符(a,b,c)并获取数组的排列。
由于某种原因,它不打印出来。我确定这是一个简单的错误,但我找不到它。非常感谢这些建议。
public static void main(String[] args) {
int [] A = new int []{'a','b','c'};
permute(A, 3);
}
public static void permute(int[] A, int p){
if(A.length == 0){
return;
}
for(int i = 0; i < A.length; i++){
char ch = (char) p;
p += A[i];
permute(A,p);
p = ch;
}
}
答案 0 :(得分:1)
您的方法存在一些问题:
char
s时使用int
s,反之亦然; System.out.print
语句,因此您永远不会指示Java程序打印任何内容; for
部分并继续建立一个调用堆栈;和p
的含义。内联排列程序如下所示:
public static void permute(char[] a, int p){
if(p >= a.length) {//we've reached the end of the array, now print
for(int i = 0; i < a.length; i++) {
System.out.print(a[i]);
}
System.out.println();
} else {
char cp = a[p];
for(int i = p; i < a.length; i++){
char ci = a[i];
a[p] = ci;
a[i] = cp;
permute(a,p+1);
a[i] = ci;
}
a[p] = cp;
}
}
然后,您使用permute(a,0)
调用该方法,并a
列出您想要排列的字符。