参考:http://www.xuebuyuan.com/600583.html
http://blog.csdn.net/hackbuteer1/article/details/7462447
http://blog.csdn.net/net_assassin/article/details/8926120
http://www.cnblogs.com/qkhhxkj/archive/2011/06/29/2093894.html
C++实现求字符串的所有的组合,假定输入的字符串没有重复。有两种实现的方法
//要求输入的字符没有重复,否则输出组合结果中有重复的
#include<iostream>
#include<vector>
using namespace std;
void combination(char* string,int number,vector<char>&result);
void combination(char *string)
{
if(string==NULL)
return;
vector<char>result;
int length=strlen(string);
for(int i=1;i<=length;i++)//注意这里一定是i从1开始到length,因为每个组合包括的字符从1个到length个这么多种情况
combination(string,i,result);
}
void combination(char* string,int number,vector<char>&result)
{
if(string==NULL)
return;
if(number==0)
{
static int index=1;//用static声明一个静态持续变量,在整个程序执行期间一直存在
vector<char>::iterator iter=result.begin();
cout<<"