输入一字符串,输出该字符串的所有组合。如输入字符串abc,输出结果为a,b,c,ab,ac,bc,abc.
该题目采用递归的算法进行,递归的参数同字符组合数有关。
其代码如下:
//字符串的所有组合
void AllSort(char* str,int m,vector<char>&result)
{
if(str==NULL||(*str=='\0'&&m!=0))
return;
if(m==0)
{
for(unsigned i=0;i<result.size();i++)
cout<<result[i];
cout<<endl;
return;
}
//选择这个元素进行递归
result.push_back(*str);
AllSort(str+1,m-1,result);
result.pop_back();
//不选择该元素递归
AllSort(str+1,m,result);
}
int main()
{
char *m="abcd";
for(int i=1;i<=strlen(m);i++)
{
vector<char> result;
AllSort(m,i,result);
}
return 0;
}