(枚举专题)组合数枚举

枚举方式就是DFS,设置剪枝和条件检查,不满足则return回溯,后面进行递归,不同的在于枚举不仅仅得到一个答案就回溯了,而是得到所有答案,因此再进行一次calc函数递归,第一个剪枝条件是为了得到m个数后输出,第二个剪枝条件是在到达最后几个数后防止剩余数不够及时return回去结束程序

c++代码:

复制代码
#include<bits/stdc++.h>
using namespace std;

//从n中取m个数,有多少种组合 
int n;
int m;

vector<int>  chosen;



void calc(int x)
{
	//剪枝 
	if(chosen.size()>m||chosen.size()+(n-x+1)<m)
	return;
	//check检查是否满足条件
	if(x-1==n)
	{
		for(int i=0;i<chosen.size();i++)
		{
			cout<<chosen[i];
		}
		puts(" ");
		return; 
	 } 
	 chosen.push_back(x);
	 calc(x+1);
	 chosen.pop_back();
	 calc(x+1);
 } 



int main()
{
	cin>>n>>m;
	calc(1);
	return 0;
 } 
相关推荐
潼心1412o16 小时前
C++初阶(长期更新)第6讲:类和对象(下)
开发语言·c++·算法
星光开发者17 小时前
基于决策树随机森林算法的小说推荐系统的设计与实现-计算机毕设【课程设计】78485
vue.js·算法·微信小程序·django·php·课程设计·express
-森屿安年-17 小时前
按身高排序
c++·算法
程序员清风17 小时前
算法与数据结构入门:复杂度、数组与链表
数据结构·算法·链表
无定义_17 小时前
Codeforces Round 1124 (Div. 2)
算法
山下梅子酒22517 小时前
洛谷-入门-B2079
c语言
(Charon)18 小时前
【C++面试】vector底层原理:扩容、拷贝移动与迭代器失效
c++·面试
朔北之忘 Clancy18 小时前
青少年软编等考七级题解目录
开发语言·c++·青少年编程·gesp·csp·信奥赛·noi
汉克老师18 小时前
GESP2026年9月认证C++七级( 第一部分选择题(8~15题)精讲
c++·gesp·小学生·学c++编程
Mr_Macallon18 小时前
C++回顾(基础)(01)
c语言·开发语言·c++·学习