運用遞迴的思路,第一位具有n種情況,接著在第一位確定後,第二位有n-1種情況,再接著第二位確定後,第三位有n-2種情況等…
例:輸入1 2 3。
輸出1-2-3。
1-3-2。
2-1-3。
2-3-1。
3-1-2。
3-2-1。
規律:有n個數的條件下,每個數都會在第一位(n-1)次。這裡用乙個for迴圈就行。
再對他們後面數進行全排列。這就形成遞迴。
遞迴函式:
輸入:陣列,左邊,右邊。
遞迴結束的條件:當左邊等於右邊,完成排列,可以進行其他操作。
主體:for(從左到右進行操作)
#include
#include
intinput
(int
);//輸入陣列,並返回陣列元素個數。
intinput
(int nums)
return i;
}void
quanpailie
(int
,int
,int);
//遞迴,將最後乙個放入前n-1個的全排列。以此類推。
//p,最後乙個數。q,「龍頭」後的數。
void
quanpailie
(int nums,
int p,
int q)
printf
("\n");
}else}}
intmain()
#include
using
namespace std;
#include
void
fun(string &str,
int left,
int right)
else}}
intmain()
詳解全排列
題目 用c 寫乙個函式,如 foo const char str 列印出 str 的全排列,如 abc 的全排列 abc,acb,bca,bac,cab,cba。以下內容參考 一 全排列的遞迴實現 為方便起見,用123來示例下。123的全排列有123 132 213 231 312 321這六種。首...
詳解全排列
題目 用c 寫乙個函式,如 foo const char str 列印出 str 的全排列,如 abc 的全排列 abc,acb,bca,dac,cab,cba。一 全排列的遞迴實現 為方便起見,用123來示例下。123的全排列有123 132 213 231 312 321這六種。首先考慮213和...
演算法 全排列
從n個不同元素中任取m m n 個元素,按照一定的順序排列起來,叫做從n個不同元素中取出m個元素的乙個排列。當m n時所有的排列情況叫全排列。用演算法分別實現全排列,其中n個元素儲存在乙個長度為n的陣列中。實現全排列之前,先看一下對進行全排列的一種方法 從圖中可以看出,我們首先從n個元素中取出乙個元...