(枚举专题)组合数枚举

枚举方式就是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;
 } 
相关推荐
刘阿去2 小时前
tcc编译器教程6 进一步学习编译gmake源代码
c语言·学习
安忘3 小时前
LeetCode 热题 -189. 轮转数组
算法·leetcode·职场和发展
Y1nhl3 小时前
力扣hot100_二叉树(4)_python版本
开发语言·pytorch·python·算法·leetcode·机器学习
RichardK.4 小时前
CCF-CSP第27次认证第1题 --《如此编码》
c++·学习
曼诺尔雷迪亚兹4 小时前
2025年四川烟草工业计算机岗位备考详细内容
数据结构·数据库·计算机网络·算法
蜡笔小新..5 小时前
某些网站访问很卡 or 力扣网站经常进不去(2025/3/10)
算法·leetcode·职场和发展
life_time_5 小时前
C语言(23)
c语言·开发语言
Simon523145 小时前
数据结构---八大排序
java·数据结构·排序算法
星夜钢琴手5 小时前
C/C++ 实现由用户通过键盘输入自然数并判断其是不是素数(带清空缓冲区等考虑)
c语言·开发语言·c++·c/c++
IT猿手5 小时前
2025最新群智能优化算法:基于RRT的优化器(RRT-based Optimizer,RRTO)求解23个经典函数测试集,MATLAB
开发语言·人工智能·算法·机器学习·matlab