給定乙個陣列,求這個陣列的全排列。
列如:a=
,對陣列a求全排列
結題思路:
將a陣列中的元素依次放在第乙個位置然,對剩下的元素進行全排列。剩下元素全排列依然是,將剩下的元素依次放在第乙個位置,對剩下的元素進行全排列。直到剩下的元素個數為乙個時,排列結束。
這裡我給出固定元素1,對元素2、3、4進行全排列的一種情況,其他情況類似
//從第k位到第m位全排列
//還有多個元素待排列,遞迴產生排列
for(
int i = k; i <= m; i++)}
intmain()
;perm
(list,0,
2);// 0,2表示0號元素到2號元素做全排列
return0;
}對於這段核心****:
其中的變數:i
始終是要換到第乙個位置的元素的下標,變數:k
是第乙個位置元素的下標
for
(int i = k; i <= m; i++
)
結果:
遞迴過程確實比較難理解,大家可以在excel表中畫一下遞迴過程,這樣有助於大家理解整個過程!!!
C 實現全排列
總時間限制 1000ms 記憶體限制 65536kb 描述給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出輸出這...
全排列的實現(C)
找工作,筆試經常會出現乙個題,怎樣生成乙個集合內所有元素的全排列。剛開始的時候沒有覺得這是乙個難的問題。其實,當寫在試卷上,真的不太會,作答的過程感覺心裡沒有什麼底。回來後,查了一些資料,看了一些書,對這個問題有一定的認識,舉乙個例去清晰一下題目的意思,例子為 字符集的全排列 123,132,312...
全排列(遞迴) C 實現
給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出這個字串的所有排列方式,每行乙個排列。要求字母序比較小的排列在前面。...