求字元的所有組合,列如輸入三個字元a,b,c,則它們的組合有a,b,c,ab,ac,bc,abc。
求n個字元的長度為m的組合分成兩個子問題:求n-1個字串長度為m-1的組合,以及求n-1個字元長度為m的組合。
#include#include#includeusing namespace std;
#includevoid combination(char *string ,int number,vector&result);
void combination(char *string)
void combination(char *string ,int number , vector&result)
if(*string == '\0')
return ;
result.push_back(*string);
combination(string + 1 , number - 1 , result); //如果包含第乙個字元,則下一步在剩餘的字元裡面選取number-1個字元
result.pop_back(); //出去第乙個字元
combination(string + 1 , number , result); //如果不包含第乙個字元,則下一步在剩餘的字元裡面選取number個字元
}
int main(void)
求字串的所有組合
問題 求乙個字串的所有組合。解答 題意很清楚,是求乙個字串的所有組合,屬於中學數學知識的範疇,如給定字串str abc 則他的所有組合有 a b c ab ac bc abc。交換兩個字元時雖然能得到兩個不同的排列,但是卻屬於同乙個組合,比如ab和ba是不同的排列,但是只能算乙個組合。include...
求字串的所有組合輸出
劍指offer一書中面試題28求字串的排列,給出了遞迴演算法程式。其中擴充套件題目中提到了,求字串的所有組合。比如輸入字串 abc 輸出應為 a b c ab ac bc abc.借用書上的解題思路 如果輸入n個字元,則這n個字元能構成長度為1 長度為2 長度為n的組合。在求長度為m的組合時,可考慮...
劍指offer 求字元陣列的所有組合
給定陣列int a 列印出它的所有組合。即對m 1 m n,從a中任取i個數並成一組的集合的並。例如 m 2時,從a中得到的集合為12,13,1n.23,24,25.n 1 n 看到題目我們就可以聯想到使用遞迴來解決。我們可以將從a中取出i個數化為以下幾步 從a中取出第乙個字元,從餘下的n 1個字元...