全排列Ⅱ(递归模板)
蓝桥杯常考全排列掌握一套全排列的模板就尤为重要,一下为全排列递归模板代码:
import java.util.Arrays;
public class 全排列Ⅱ {
public static void main(String[] args) {
char[] chars = "ABC".toCharArray();
// int [] arr = {1,9,4,9};
f(chars,0);
}
/**
* @param chars
* @param index
*/
private static void f(char[] chars,int index) {
if(index==chars.length) {
System.out.println(Arrays.toString(chars));
}
// 重点:一定要从index开始而非是从0开始
// 并且这个for循环隐含了出口,无需再额外的写出口;
for (int i = index; i <chars.length;i++) {
char t = chars[i];
chars[i] = chars[index];
chars[index] = t;
f(chars,index+1);
// 当程序执行到这一行,那么全排列的一种情况已经既定
// 开始回溯 来走平行状态
t = chars[i];
chars[i] = chars[index];
chars[index] = t;
}
}
}