如果給定n個不同字元,將這n個字元全排列,最終的結果將會是n!種。如:給定 a、b、c三個不同的字元,則結果為:abc、acb、bac、bca、cab、cba一共3!=3*2=6種情況。
public class test6
public static void count(vectorv1,vectorv2)
system.out.print("\n");
count++;
return;
}for (int i = 0; i < v1.size(); i++) }}
注:主要考察的是遞迴
如果需要輸出的是含重複的資料是可以改為
public static void count(vectorv1,vectorv2)
system.out.print("\n");
count++;
return;
}for (int i = 0; i < v1.size(); i++)
}
N個數的全排列
我採用的方法是類似密碼箱的轉輪來得到所有的排列組合 比如求 1,2,3,4的所有排列組合 採用遞減式輪轉來生成 n 4 以1234為初始值 得到如下的所有4個組合,放入最終的容器中 1 2 3 4 2 3 4 1 3 4 1 2 4 1 2 3 n 3 以上面的四個作為初始值,在第三位開始輪轉 得到...
輸出排列的第n個數
華電北風吹 最後修改日期 2015 8 6 輸入 乙個整數n和乙個字串鍊錶 預設鍊錶已經由小到大排序好,例如 1,2,3,4,5,6 這個主要是用來計算排列組合次序的,並不是嚴格的排序,但是是預設的順序也行,例如 a,b,c,1,2,3 輸出 輸入鍊錶從最小的排列 輸入排列預設是最小的 開始的第n個...
N個數的全排列 回溯法
思路 問題的解空間為排列樹,乙個排列中元素不能重複,故採用交換的方式,對於排列樹的第i層,擴充套件狀態是a i 可以取a i 到a n 1 的任何元素,即j i到n 1迴圈 將a i 與a j 交換,在這種方式下求出排列後需要恢復,即將a i 與a j 再次交換,回到之前的狀態 回溯 然後繼續求其他...