递归函数:选择第一个元素后,剩下的元素将调用自身来选择。
1.元素总数量
2.剩下需选择的元素数量
3.已选择的元素序号
#include "stdafx.h"
#include<iostream>
#include<vector>
using namespace std;
void pick(int n, vector<int>& picked, int toPick)
{
if (toPick == 0)
{
int m = picked.size();
for (int i = 0; i < m; i++)
{
cout << picked[i] << " ";
}
cout << " " << endl;
return;
}
int smallest = picked.empty() ? 0 : picked.back() + 1;
for (int next = smallest; next < n; next++)
{
picked.push_back(next);
pick(n, picked, toPick - 1);
picked.pop_back();
}
}
int main()
{
int n = 7;
int toPick = 3;
vector<int> picked;
/*
for (int i = 0;i < n;i++)
{
for (int j = i+1; j < n;j++)
{
for (int k=j+1;k<n;k++)
{
cout << i << " " << j << " " << k << endl;
}
}
}
*/
pick(n,picked,toPick);
return 0;
}