/* 例如:abc
* abc acb bac bca cab cba
* 我们不难发现,将数组中的每一个元素与第一个元素进行交换,然后进行全排列
*/
public static void allSort(char []data,int key) {
if(key == data.length) {
for(int i = 0;i < data.length; i++) {
System.out.print(data[i] + "");
}
System.out.println();
}
for(int i = key; i < data.length; i++) {
// 试探
{char t = data[key];data[key] = data[i];data[i] = t;}
allSort(data, key+1);
// 回溯
{char t = data[key];data[key] = data[i];data[i] = t;}
}
}
public static void main(String[] args) {
System.out.println("-----------------");
char []c = "abcd".toCharArray();
allSort(c, 0);
}
递归:求 n个元素的全排列
最新推荐文章于 2023-09-06 13:45:54 发布