递归实现组合型枚举
作者:
Dessa
,
2025-04-10 11:23:59
· 广东
,
所有人可见
,
阅读 1
例如 n=5,r=3,所有组合为:
123,124,125,134,135,145,234,235,245,345。
#include <iostream>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdio>
#include <set>
#include <map>
#include <vector>
#include <deque>
#include <iomanip>
using namespace std;
typedef long long ll;
int arr[30];
bool a[30];
int n, r;
void dfs(int x, int ok)
{
if (x > r)
{
for (int i = 1; i <= r; i++)
{
cout << setw(3) << arr[i];
}
cout << endl;
return;
}
for (int i = ok; i <= n; i++)
{
if (a[i] != true)
{
arr[x] = i;
a[i] = true;
dfs(x + 1, i + 1);
arr[x] = 0;
a[i] = false;
}
}
}
int main()
{
cin >> n >> r;
dfs(1, 1);
return 0;
}