您的位置:首页 > 其它

利用递归巧妙实现组合

2014-09-30 20:40 218 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: