輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字元abc,則列印出由字元a、b、c所能組合出來的所有字串a、b、c、ab、ac、bc、abc『。
前面的部落格中解析了全排列的問題,當交換字串中的兩個字元時,雖然能得到兩個不同的排列,但卻是同乙個組合,比如ab和ba是不同的排列,但只算是乙個組合
求n個字元組成長度為m的組合的問題分解成兩個子問題
(1)求n-1和字元中長度為m-1的組合
(2)求n-1和字元的長度為m的組合
(1)已經取到了m個字元
(2)乙個取到了最後乙個字元,但是字元數還沒有到m個
void combination(char arr, int length)
vectorresult;
for (int i = 1; i <= length; i++) }
void process1(char arr,int index, int m, int n, vectorresult)
cout << endl;
} if (arr[index] == '\0')
for (int i = index; i < n; ++i)
}
因為每個組合的大小不一樣,所以就使用了庫函式中的vector,相當於動態順序表。
有兩種編列方法:
(1)陣列下標
(2)迭代器
數字組合問題
題目 有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?程式分析 可填在百位 十位 個位的數字都是1 2 3 4。組成所有的排列後再去 掉不滿足條件的排列。方法一 列出取值範圍內所有資料,分別檢查是否符合條件 public static void calculatenum1...
數字組合問題
設有n個正整數,現在需要你設計乙個程式,使他們連線在一起成為最大的數字,例3個整數 12,456,342 很明顯是45634212為最大,4個整數 342,45,7,98顯然為98745342最大 程式要求 輸入整數n 接下來一行輸入n個數字,最後一行輸出最大的那個數字!題目解析 拿到這題目,看起要...
LintCode 數字組合
給出一組候選數字 c 和目標數字 t 找到c中所有的組合,使找出的數字和為t。c中的數字可以無限制重複被選取。例如,給出候選陣列 2,3,6,7 和目標數字7,所求的解為 7 2,2,3 您在真實的面試中是否遇到過這個題?yes 樣例給出候選陣列 2,3,6,7 和目標數字7 返回 7 2,2,3 ...