1. 字母全排列
2. 3. 首先可以看出,全排列其實就是階乘,3個字母會有3階乘種表現,4字母會有4階乘種
4. 上面fat的變化是有規律的 ,我們要得到全排列的做法是: 將三個字母分別作為開頭,然後
5. 調整除了第乙個字元之外的位置,即fat 將後兩個調整 fta
6. 當有4個字母時,如golf,那麼分別讓g,o,l,f打頭,當g打頭是後面是olf,那就可以回到上面fat的例子
7. 這就是遞迴的表現,4個字母是四種字母打頭的後面是3的全排列,3個字母又是3種字母打頭的後面是2的全排列 就像第一行所示
8. 9. 其實遞迴就是一種封裝,一種物件導向,或者說是面向責任。。。所以遞迴責任鏈中的每乙個職責執行者識別符號肯定有區別。。。。這裡的識別符號就是 start...而且在遞迴中最後乙個責任執行者所做的事情與前面的人做的完全不一樣,所以需要判斷是否是最後乙個執行者。。。。。
10.
11. //每一級所做的事情:使得char中的每個元素都充當首元素
12. //傳遞規則: 把除了首字母的char傳遞下去
13. //歸的條件: 如果全部搞完,則重頭到尾列印一次
14.
15.
16. 什麼叫全排列。。。其實就是要得到全部的結果,而不是乙個結果,從技術角度說,一次遞迴只可能得到乙個結果,但是這裡在遞迴中有迴圈,也就意味著有分支了。。所以這樣可以造成多個結果,與倒油問題不同,這裡每一次陣列都會遞減。。。而倒油問題的油桶每一次都是一樣的。。。。。
17.
18. public static void main(string args)
23.
24. public static void doanagram(char c, int start, int end) else
43. }
44. }
字母大小全排列
題目描述 給定乙個字串s,通過將字串s中的每個字母轉變大小寫,我們可以獲得乙個新的字串。輸出所有可能的字串的數量。輸入測試樣例由多組測試資料組成,每組測試資料第一行輸入乙個字串s 1 s.length 12 輸出輸出所有可能的字串的數量 樣例輸入 copy q1b2 樣例輸出 copy 4第一種方法...
Problem A 字母大小全排列
description 給定乙個字串s,通過將字串s中的每個字母轉變大小寫,我們可以獲得乙個新的字串。輸出所有可能的字串的數量。input 測試樣例由多組測試資料組成,每組測試資料第一行輸入乙個字串s 1 s.length 12 output 輸出所有可能的字串的數量 sample input q1...
字母大小全排列(回溯)
題目描述 給定乙個字串s,通過將字串s中的每個字母轉變大小寫,我們可以獲得乙個新的字串。輸出所有可能的字串的數量。輸入 測試樣例由多組測試資料組成,每組測試資料第一行輸入乙個字串s 1 s.length 12 輸出 輸出所有可能的字串的數量 臨時抱佛腳,開始學回溯,昨天下午看了一下午沒看懂,早上起來...