经典算法——字符串的全部组合
2017-06-29 19:40
197 查看
#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; }
相关文章推荐
- 经典算法——字符串的所有组合
- 字符串组合算法--但是思路还没全部搞明白
- ACM经典算法之字符串处理:字符串截取
- 经典算法面试题目-翻转一个C风格的字符串(1.2)
- 经典算法面试题目-设计算法移除字符串中重复的字符(1.3)
- 字符串的全排列和组合算法
- 经典算法面试题目-替换字符串的内容(1.5)
- 算法竞赛入门经典: 第三章 数组和字符串 3.5回文串
- 我理解的剑指offer----字符串的全排列和组合算法
- 【LeetCode-面试算法经典-Java实现】【129-Sum Root to Leaf Numbers(全部根到叶子结点组组成的数字相加)】
- 数据结构——算法之(031)(将字符串中全部小写字母排在大写字母的前面)
- [经典算法] 排列组合-全排序
- [经典算法] 排列组合-N元素集合的M元素子集
- (算法)字符串的组合
- 经典算法 | 求解数组中的4个数的和为指定数的所有组合
- 经典算法题每日演练——第五题 字符串相似度
- “金箍咒”我的全排列组合算法设计演化之一重组字符串
- 字符串的全排列和组合算法
- 字符串的全排列和组合算法
- java经典算法-字符串(一)