AcWing 93. 递归实现组合型枚举
原题链接
简单
作者:
一抹斜阳
,
2019-12-03 11:31:27
,
所有人可见
,
阅读 598
//从 1~n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。
#include<iostream>
using namespace std;
int n ;
int m;
const int N = 25;
int used[N];
int cnt;
bool jianzhi(int k, int i);
void fun(int k);
int main()
{
cin >> n >> m;
fun(1);
return 0;
}
void fun(int k)
{
if (k == n + 1)
{
int j;
for (j = 1; j <= n; j++)
if (used[j] == 1)
cout << j << " ";
cout << endl;
}
else
{
int j = 0;
for (j = 1; j >=0; j--)
{
if (jianzhi(k, j))
{
used[k] = j;
if (j == 1)
cnt++;
fun(k + 1);
if (j == 1)
cnt--;
}
}
}
}
bool jianzhi(int k, int i)
{
if (i == 1 && cnt == m)
return false;
if ((i == 0) && ((n - k) + cnt) < m)
return false;
return true;
}