http://www.cnblogs.com/heyonggang/p/3642455.html 借鉴了该博客中的
输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来</span></span>
list<char>list1;
void combine(char *str,int m, int len,int n)
{
// 递归出口
if(m==len+1)
return;
// 输出找到的结果
if(0 == n)
{
for(list<char>::iterator iter = list1.begin(); iter != list1.end(); iter++)
{cout << *iter ;}
cout<<"\n";
return;
}
list1.push_back(str[m]);
combine(str,m+1,len,n-1); //放第m个字符
list1.pop_back();
combine(str, m+1,len,n); //不放第m个字符
}
int main()
{
char str[]="abcd";
combine(str,0,4,2);
return 0;
}