【正经题解】组合的输出
2024-02-21 17:36:25
发布于:浙江
38阅读
0回复
0点赞
#include <iostream>
using namespace std;
const int MAX_N = 25;
int n, r, arr[MAX_N], k = 1;
bool visited[MAX_N];
// 深度优先搜索生成组合
void dfs(int idx) {
if (idx > r) {
// 输出当前组合
for (int i = 1; i <= r; i++)
cout << " " << arr[i];
cout << endl;
return;
}
for (int i = 1; i <= n; i++) {
if (!visited[i] && arr[idx - 1] < i) {
visited[i] = true; // 标记为已使用
arr[idx] = i; // 选择当前元素
dfs(idx + 1); // 递归生成下一个元素
visited[i] = false; // 回溯,取消标记
}
}
}
int main() {
cin >> n >> r;
dfs(1);
return 0;
}
这里空空如也
有帮助,赞一个