字母的全排列問題(python和C語言實現)

2021-08-28 04:13:32 字數 1031 閱讀 5385

前言

這是乙個經典的問題

設計乙個演算法,輸出乙個字串字元的全排列問題。

比如: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第一種方法...