转自:http://blog.csdn.net/fanzitao/article/details/7879033

来源:http://zhedahht.blog.163.com/blog/static/2541117420114172812217/

题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
分析:在本系列博客的第28题《字符串的排列》中,我们详细讨论了如何用递归的思路求字符串的排列。同样,本题也可以用递归的思路来求字符串的组合。

假设我们想在长度为n的字符串中求m个字符的组合。我们先从头扫描字符串的第一个字符。针对第一个字符,我们有两种选择:一是把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符;而是不把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选择m个字符。这两种选择都很容易用递归实现。下面是这种思路的参考代码:

#include<iostream>
#include<vector>
using namespace std;void Combination(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);Combination(string + 1, number - 1, result);result.pop_back();Combination(string + 1, number, result);
}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 *str ="abcd";combination(str);getchar();return 0;
}

由于组合可以是1个字符的组合,2个字符的字符……一直到n个字符的组合,因此在函数void Combination(char* string),我们需要一个for循环。另外,我们一个vector来存放选择放进组合里的字符。

求集合/字符串中的所有组合 (C语言)相关推荐

  1. 求一个字符串中连续出现的次数最多的子串

    求一个字符串中连续出现的次数最多的子串.例如字符串"abababc",最多连续出现的为ab,连续出现三次.要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复 ...

  2. 求一个字符串中连续出现次数最多的子串

    http://blog.csdn.net/imcdragon/article/details/6838565解答二 http://hi.baidu.com/icyday315/item/040aada ...

  3. 【字符串问题】求一个字符串中重复出现的最长的子串

    2013-09-14 15:34:16 用后缀数组求一个字符串中重复出现的最长的子串. 用C++中的string类可以很方便地进行操作,需将后缀数组保存在vector<string>,如下 ...

  4. 求这个字符串中的最大的数字字符串

    问题:有字符串"abc3d45678rd345",求出这个字符串中出现的最大的数字字符串? 思路: 1.先从字符串中的第一个字符开始遍历: 2.取出单个字符,使用正则表达式匹配数字 ...

  5. 去除字符串中的空格(C语言)

    去除字符串中的空格(C语言) #include<stdio.h> #include<string.h> void f1(char *p,char c){int i=0,j=0; ...

  6. 提取字符串中的数字(C语言)

    提取字符串中的数字(C语言) - 康建伟 - 博客园https://www.cnblogs.com/kangjianwei101/p/5220336.html 大佬的分享,在这里方便自己总结学习,因此 ...

  7. 找字符串中最长单词C语言,C语言 在已知字符串中找最长单词

    编程在一个已知的字符串中找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词. 比如:"ni hao world",最长单词是5个字母 这个题目其实不难,但是很多初学者会没 ...

  8. c语言中怎样删除字符串中的字母,删除字符串中的字符(C语言)

    题目: 编程序将给定字符串中指定字符删除.要求删除指定字符后原字符串不能留下空位置,字符串和指定字符均由键盘输入 基本思路 将字符串与要删除的字符进行比较,若为相同字符,则将字符串中的该字符替换为原字 ...

  9. 数据结构-求一个字符串中的某个子串(C语言)

    文章目录 题目描述: 代码实例: 题目描述: 返回顺序串s中从第i(1<i<n)个字符开始的连续j个字符组成的子串.当参数不正确时返回一个空串 代码实例: #include<stdi ...

最新文章

  1. java基础编程题(2)
  2. beautifulsoup关于标签的初学习
  3. java 字符串常用函数_Java学习(5)——字符串常用函数
  4. selenium之定位以及切换frame
  5. linux进程阻塞的原因,释放大块内存时的阻塞问题
  6. Android录音采样率限制问题(十一)
  7. 软件测试 集成测试
  8. 安装破解VS2015(破解使用秘钥)
  9. CurvySplines03(模板提升工作效率)
  10. PPT背景填充的几种方式,简单高效
  11. 关于数据库中的二维表是不是关系的判断
  12. 如何看待IT培训这件事情?IT培训出来的人都一无是处吗?
  13. matlab函数——shading函数
  14. javascript数组 去重
  15. 面试:百度,阿里等--10/2015
  16. IOS欢迎界面Launch Screen动态加载广告
  17. 应用大数据助力车险反欺诈
  18. C#中TextBox实现换行
  19. matlab中散点图的线性拟合_【在线等】Matlab 散点图线性拟合
  20. 我的同事们(二):Joey Shen

热门文章

  1. 题目1009:二叉搜索树
  2. c# 泛型study
  3. java CAS和AQS
  4. 【7.2】__getattr__、__getattribute__魔法函数
  5. ros service
  6. class-5 If语句
  7. 【php】(转载)分享一个好用的php违禁词 处理类
  8. shopping car 2.0
  9. jQuery对表单、表格的操作以及更多应用
  10. 【字符串】大小写的转换