package 递归;
public class digui2_2 {
/**
* 【递归】求n个元素的全排列 abc acb bac bca cab cba
*
* @param args
*/
public static void f(char data[], int k) { // 当前关注点k
if (k == data.length) {
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
}
// 把第一个元素放这里,后面的元素再进行全排列
// 后面的元素不能简单放过来:会覆盖!!交换即可。
for (int i = k; i < data.length; i++) { // 循环中的递归就是出口
// 将数组每个元素和后面的元素进行交换,然后递归
{
char temp = data[k]; // 试探
data[k] = data[i];
data[i] = temp;
}
f(data, k + 1);
{
char temp = data[k];
data[k] = data[i];
data[i] = temp;
}
}
}
public static void main(String[] args) {
// 将一个String改为char数组,打印所有排列形式
char data[] = "ABc".toCharArray(); // 转化为char型数组语句
f(data, 0); // 传data数组
}
}
求n个元素的全排列 ——Java/递归/蓝桥杯
最新推荐文章于 2021-01-19 15:25:34 发布