前言
這是乙個經典的問題
設計乙個演算法,輸出乙個字串字元的全排列問題。
比如:string=「abc」
輸出是;abc,acb,bac,bca,cba,cab
解法 從集合中依次選出每乙個元素,作為排列的第乙個元素,然後對剩餘的元素進行全排列,如此進行遞迴處理。
比如:首先我要列印abc的全排列,就是第一步把a和b和c進行交換,得到bac,cba,這就需要乙個for迴圈,迴圈裡面有個swap,交換之後就相當於不管第一步了,進入到下一步遞迴,所以跟乙個遞迴函式,完成遞迴之後把交換的換回來,變成原來的字串。
大概情況如下
python語言實現
**in [151]: def perm(l):
...: if len(l)<=1:
...: return [l]
...: r=
...: for i in range(len(l)):
...: s=l[:i]+l[i+1:]
...: p=perm(s)
...: for x in p:
...: return r
...:
in [152]: l=['a','b','c']
in [153]: perm(l)
out[153]:
[['a', 'b', 'c'],
['a', 'c', 'b'],
['b', 'a', 'c'],
['b', 'c', 'a'],
['c', 'a', 'b'],
:void faction(type a,int p,int
q) else}}
參考: 字母全排列
1.字母全排列 2.3.首先可以看出,全排列其實就是階乘,3個字母會有3階乘種表現,4字母會有4階乘種 4.上面fat的變化是有規律的 我們要得到全排列的做法是 將三個字母分別作為開頭,然後 5.調整除了第乙個字元之外的位置,即fat 將後兩個調整 fta 6.當有4個字母時,如golf,那麼分別讓...
ZJYYCOJ問題 A 字母大小全排列
題目描述 給定乙個字串s,通過將字串s中的每個字母轉變大小寫,我們可以獲得乙個新的字串。輸出所有可能的字串的數量。輸入格式 測試樣例由多組測試資料組成,每組測試資料第一行輸入乙個字串s 1 s.length 12 輸出格式 輸出所有可能的字串的數量 樣例輸入 copy q1b2樣例輸出 copy 4...
字母大小全排列
題目描述 給定乙個字串s,通過將字串s中的每個字母轉變大小寫,我們可以獲得乙個新的字串。輸出所有可能的字串的數量。輸入測試樣例由多組測試資料組成,每組測試資料第一行輸入乙個字串s 1 s.length 12 輸出輸出所有可能的字串的數量 樣例輸入 copy q1b2 樣例輸出 copy 4第一種方法...