组合型枚举

0.简介

同 $C_{m}^{n} $

1.代码模板

#include<bits/stdc++.h>
using namespace std;
int n, m;
vector<int> chosen;

// x为当前选择的位, n-x+1为剩余可以选择的数量 
void DFS(int x) {
	if(chosen.size() > m || chosen.size() + (n - x + 1) < m) {
		return;
	}

	// 选满了m 个数
	if(x == n + 1) {
		for(int num : chosen) {
			cout << num << " ";
		}
		cout << endl;
		return;
	}

	// 选择当前值
	chosen.push_back(x);
	DFS(x+1);
	// 不选择当前值
	chosen.pop_back();
	DFS(x+1);

}
int main() {
	cin >> n >> m;
	DFS(1);
	return 0;
}
posted @ 2024-04-26 23:45  DawnTraveler  阅读(4)  评论(0编辑  收藏  举报