蓝桥杯备考:DFS剪枝之数的划分

这道题和组合型枚举差不多,比如我们从第一个数开始填,到第二个数的时候,21明显是重复了,我们就没必要继续往下递归了,这个叫剪掉等效冗余分支,然后还有就是,比如我们2开始的枝头,222,223,224,225,我们222的时候就已经比5大了,这时候我们再递归算后面的就没用了,我们3开始的时候,344,345肯定是更大的了 所以这条就是我们的可行性剪枝,我们把后面的分支全部剪掉就行了

cpp 复制代码
#include <iostream>
using namespace std;
int n,k;
int path;
int cnt;
void dfs(int pos,int begin)
{
	if(pos == k)
	{
	    if(path == n)
         cnt++;
		 return;	    
	}
	for(int i = begin;i<=n;i++)
	{
		if(path+i*(k-pos)>n) return;
		path+=i;
		dfs(pos+1,i);
		path-=i;
		
	}
}

int main()
{
	cin >> n >> k;
	dfs(0,1);
	
	cout << cnt << endl;
	
	
	
	
	
	
	
	
	return 0;
}
相关推荐
py有趣1 分钟前
力扣热门100题之岛屿的数量(DFS/BFS经典题)
leetcode·深度优先·宽度优先
SpiderPex15 分钟前
第十七届蓝桥杯 C++ B组-题目 (最新出炉 )
c++·职场和发展·蓝桥杯
zyq99101_11 小时前
DFS算法实战:经典例题代码解析
python·算法·蓝桥杯·深度优先
苏纪云4 小时前
蓝桥杯考前突击
c++·算法·蓝桥杯
打瞌睡的朱尤6 小时前
4.9蓝桥杯
职场和发展·蓝桥杯
语戚6 小时前
力扣 51. N 皇后:基础回溯、布尔数组优化、位运算全解(Java 实现)
java·算法·leetcode·力扣·剪枝·回溯·位运算
xiaoyaohou117 小时前
003、轻量化改进(一):网络剪枝原理与实战
算法·机器学习·剪枝
念越1 天前
蓝桥杯4期模拟单元测试解析
蓝桥杯·单元测试
仟濹1 天前
2026-04-09~10-复习计划+蓝桥杯注意的点
职场和发展·蓝桥杯