#include <iostream>
#include <vector>
using namespace std;
void f(int m, vector<int> vec, vector<int>& sd, size_t& count)
{
if (m == 1)
{
for (int i = 0; i<vec.size(); i++)
{
count++;
cout << count << ":";
for (int k = 0; k<sd.size(); k++)
cout << sd[k] << " ";
cout << vec[i] << " " << endl;
}
}
else
{
for (int i = 0; i<vec.size(); i++)
{
sd.push_back(vec[i]);
vector<int> temp;
for (int j = i + 1; j<vec.size(); j++)
{
temp.push_back(vec[j]);
}
f(m - 1, temp, sd, count);
sd.pop_back();
}
}
}
int main(int argc, char* argv[])
{
if (argc != 3)
return 0;
vector<int> vec;
for (int i = 0; i<atoi(argv[1]); i++)
vec.push_back(i + 1);
vector<int> sd;
size_t count = 0;
f(atoi(argv[2]), vec, sd, count);
return 0;
}
组合算法递归实现(C++)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 二分查找,如果一个有序集合,需要查找其他特定 的查询,我们可以使用二分查找,加快查询速度,具体的思路就是,每次取有...
- 本文的算法实现主要参考两本书:《算法导论》《大话数据结构》 接口 测试代码 注意 NRE表示非递归版本,RE表示递...
- 题目如下: 已知一个二叉树,指针pRoot指向根节点,求此二叉树的最大深度 关键点: 方法1:递归算法原理:每一颗...