【一些题】打印字符串的所有组合
2014-10-03 16:31
246 查看
首先是根据这篇博客给的思路
/article/1361742.html
然后是我自己的代码
区别在于:
我的程序在剩下字符个数==组合长度时,就把剩余字符全部打印,并退出
引用程序则是用了两个 if 来保证当字符个数<组合长度时就不打印
两个程序在VS2010下测试都通过
/article/1361742.html
然后是我自己的代码
void Combination(char * str) { if (!str) return; int length = strlen(str); for (int i = 1; i <=length; ++i) { vector<char> result; PrintComb(str, i, result); } } void PrintComb(char * str, int num, vector<char>& result) { int length = strlen(str); if(num == 0) { print(result); return; } if(num == length) { for(int i = 0; i < length; ++i) { result.push_back(str[i]); } print(result); for(int i = 0; i < length; ++i) { result.pop_back(); } return; } //加入第一元素 result.push_back(str[0]); PrintComb(str+1, num-1, result); result.pop_back(); PrintComb(str+1, num, result); } void print(vector<char>& str) { for(int i = 0; i< str.size(); ++i) { printf("%c", str[i]); } cout << endl; return; } int main() { char str[] = "abcefg"; Combination(str); system("pause"); return 0; }
区别在于:
我的程序在剩下字符个数==组合长度时,就把剩余字符全部打印,并退出
引用程序则是用了两个 if 来保证当字符个数<组合长度时就不打印
两个程序在VS2010下测试都通过
相关文章推荐
- 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如: 原始字符串是"abc",打印得到下列所有组合情况
- 使用循环的方式打印字符串所有排列组合
- 打印出一个字符串的所有组合的递归方式
- 打印一个字符串中字符的所有组合
- 给一个字符串(包含重复字符),打印它的所有可能的组合。
- 打印给定一字符串的所有字母组合——递归实现
- 题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。
- 写打印从0~9之间选出2个数的所有组合
- 【每天算法2】:用java语言实现,一个组数:122345这6个数,打印出它所有可能的组合;要求4不能在第3位,3和5不能相连。
- 数理逻辑,打印8个命题的所有组合(用c语言实现)
- 使用Microsoft Visual Studio International Pack获得中文字符串的所有拼音组合(处理多音字)
- SQLSERVER查询单个数据表所有字段名组合成的字符串脚本
- 排列组合-打印出一个数组的元素的所有排列方式-算法
- SQLSERVER查询单个数据表所有字段名组合成的字符串脚本
- 【每日面试题】输入一字符串,输出该字符串的所有组合
- 递归问题之一:给定一字符串,输出字符串中所有字符子串的各种组合形式,长度为一个字符到字符串的长度,忽略排序
- 输入一个字符串,输出该字符串中字符的所有组合 C#【总结】
- 打印9!所有组合,并且计算行,列,对角之和为15的矩阵
- 网新国际2008春季招聘笔试题 打印电话号码所对应的字符的所有可能组合
- 算法1(输出字符串的所有组合形式,例如 string s="abc" 输出所有形式 a,b,c,ab,bc,abc 可以与顺序无关)