輸出字串的全部組合方式
阿新 • • 發佈:2019-02-06
題目
輸入一個字串,輸出該字串中字元的所有組合。
分析
假設給定一字串“abc”,則其所有組合方式為: a, b, ab, c, ac, bc, abc共七種(2^n - 1)種組合方式,可以利用位操作來簡化題目,即給所有輸出方式進行編號(1 ~ 2^n-1),對於本題目來說即:
0 0 1 --> a
0 1 0 --> b
0 1 1 --> ab
1 0 0 --> c
1 0 1 --> ac
1 1 0 --> bc
1 1 1 --> abc
程式碼
void printAllCombination(string s) { auto len = s.size(); auto comb_count = 1 << len; for(int i = 1; i < comb_count; ++i) { for(int j = 0; j < len; ++j) if(i & (1 << j)) cout << s[j]; cout << " "; } }