遞迴輸出全排列

2021-08-18 18:00:58 字數 664 閱讀 6287

#輸入整數n(n∈(0,10)),按字典序輸出1~n的全排列。

#解法是暴力排序,核心思想在於依次確定每位數字,確定每位數字的方法相同,故可使用遞迴。每位數字均是從1開始檢驗,確定了一位後進行標記,遞迴進入下一位的確定,遇到已經標記的數字則跳過。

#字典序的完成:順序的檢查帶來了順序的排列。

#step記載了每一位上的排列可能性完成情況,根據遞迴的特點,很顯然是越高位(越深層遞迴)越先完成一次step到n。

#include#includeint out_put[10];                   //輸出陣列

int check[10]; //檢查陣列

int n;

void run_f(int step)

; //設定乙個正序的陣列當取用源

//填充out_put陣列

for(i=1;i<=n;i++)

}//out_put填充完成則輸出

if(step==n)

}int main()

非遞迴的全排列輸出

對於任意給定的1 9,給出所有的不出現重複數字的排列 由於討厭使用遞迴 好寫,但是執行效率不高 也不想使用stl模板之類,於是用標準c 單獨寫了乙個 如下 本 用於生成n的全排列,結果儲存在permutation二維陣列當中 生成的原理 假定乙個完成了n 1個數的不重複的排列,並放到permuata...

46 全排列 全排列 遞迴

遞迴的時候每次確定乙個位置的數字 nums陣列在遞迴過程中分為左右兩部分,左邊部分是已經確定好的部分,而右邊是待確定數字的部分。每次都嘗試用當前位置右邊的數字來交換當前數字以確定當前數字。題目可以使用collections來優化。詳見 class solution 遞迴過程中每次確定乙個位置的數,遞...

輸出全排列輸出

設r 為要進行全排列的n個元素,ri r 集合x中元素的全排列記為perm x ri perm x 表示全排列perm x 的每乙個排列前加上字首ri 則r的全排列歸納定義為如下 當n 1時,perm r r 當n 1時,perm r 由 r1 perm r1 r2 perm r2 rn perm ...