题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
思路:类似于第八题中求取和为给定值的多个数
#include <iostream> #include <vector> using namespace std; void Combinationk(char* string, int number, vector<char>& result); void Combination(char* string) { if(string == NULL) return; int length = strlen(string); vector<char> result; for(int i = 1; i <= length; ++ i) { Combinationk(string, i, result); } } void Combinationk(char* string, int number, vector<char>& result) { if(number == 0) { vector<char>::iterator iter = result.begin(); for(; iter < result.end(); ++ iter) printf("%c", *iter); printf("\n"); return; } if(*string == '\0') return; result.push_back(*string); Combinationk(string + 1, number - 1, result); result.pop_back(); Combinationk(string + 1, number, result); } int main() { char str[]={"abcdef"}; Combination(str); return 0; }