输出该字符串中字符的所有组合
来源:互联网 发布:class属性php 编辑:程序博客网 时间:2024/05/16 17:40
来源: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来存放选择放进组合里的字符。
- 输出该字符串中字符的所有组合
- 输出该字符串中字符的所有组合
- 输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,输出该字符串中字符的所有组合
- 题目:输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,输出该字符串中字符的所有组合。(腾讯2014笔试附加题)
- 输入一个字符串,输出该字符串中字符的所有组合
- Java练习题-输入一个字符串,输出该字符串中字符的所有组合
- 算法笔试题(四):输入一个字符串,输出该字符串中字符的所有组合
- 用lua实现一个效果,输入一个字符串,输出该字符串中所有的字符组合
- 读取一个字符串,输出它里面字符的所有组合
- 题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
- 题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
- 输出字符串中字符的所有排列
- 输出字符串的所有组合
- 【每日面试题】输入一字符串,输出该字符串的所有组合
- Java 组合的实现- 输入一个字符,输出字符中字母组成的所有组合
- 递归问题之一:给定一字符串,输出字符串中所有字符子串的各种组合形式,长度为一个字符到字符串的长度,忽略排序
- 求交后高亮显示某个Drawable
- C语言实现全排列算法
- SQLite学习笔记(2)
- poj 2823 Sliding Window(简单单调队列)
- Ldap初试
- 输出该字符串中字符的所有组合
- 关于SQL中查找字符串的总结 PATINDEX CHARINDEX 返回字符串中第N次出现指定字符串位置
- AVR熔丝位的设置分析
- Tour-----最佳二分匹配
- hdu 4373 Mysterious For 【Lucas定理】
- stick_矩阵乘法
- GwtUpload_GettingStarted
- 并查集
- 有序的循环链表中插入结点