首页 > 代码库 > 经典算法——字符串的全部组合
经典算法——字符串的全部组合
#include<iostream> #include<vector> #include<string.h> using namespace std; //从头扫描字符串得到第一个字符,针对第一个字符,有两种选择 //把这个字符放到组合中去,接下来我们须要在剩下的n-1个字符中选取m-1个字符; //假设不把这个字符放到组合中去。则须要在剩下的n-1个字符中选取m个字符 void Combination(char* string, int number, vector<char>& result) { if (number == 0) { vector<char>::iterator iter = result.begin(); for (; iter < result.end(); ++iter) cout << (*iter); cout << endl; return; } if (*string == ‘\0‘) return; result.push_back(*string); Combination(string + 1, number - 1, result);//把这个字符放到组合中去。接下来我们须要在剩下的n-1个字符中选取m-1个字符 result.pop_back(); Combination(string + 1, number, result);//不把这个字符放到组合中去,则须要在剩下的n-1个字符中选取m个字符 } void Combination(char* string) { if (string == NULL) return; int length = strlen(string); vector<char> result; for (int i = 1; i <= length; i++) { Combination(string, i, result); } } int main() { char s[] = "abc"; Combination(s); system("pause"); return 0; }
经典算法——字符串的全部组合
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。