package 蓝桥杯;
import java.util.*;
public class 全排列2 {
public static void main(String args[]) {
f("ABC".toCharArray(),0);
}
private static void f(char[] aa, int k) {
// TODO 自动生成的方法存根
if(k==aa.length-1) {
System.out.println(aa);
return;
}
for(int i=k;i<aa.length;i++) {
char x = aa[i]; aa[i] =aa[k];aa[k]=x;
f(aa,k+1);
char c = aa[i]; aa[i] =aa[k];aa[k]=c;
}
}
}
这是递归算法中,一种比较简单的形式。
给出若干个字母,然后对其进行排列组合。刚开始,可能会觉得很简单,但也会觉得无从下手。
在这里我会给出一些我学习出来的一些具体思路。
首先将String字符串通过toCharArray转换成字符数组。并将数组第一个下表。
然后通过for循环,将字母之间进行交换。
之后进行递归,它的基本思想是这样的:让其中一个字母,不断地和其他交换位置。当位置交换到最后一个时,输出字符串。
当交换完毕后,要对更改后的字符串进行回溯操作,不然字符串是比较混论的而且容易重复。