蓝桥杯备考: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;
}
相关推荐
一只鱼^_1 天前
基础算法合集-图论
数据结构·算法·深度优先·图论·广度优先·宽度优先·图搜索算法
稳兽龙11 天前
P3258 [JLOI2014] 松鼠的新家
数据结构·c++·算法·深度优先·lca
minos.cpp11 天前
从厨房到代码台:用做菜思维理解iOS开发 - Swift入门篇①
ios·蓝桥杯·swift
岁忧11 天前
第十六届蓝桥杯C/C++程序设计研究生组国赛 国二
c语言·c++·算法·蓝桥杯
xwztdas12 天前
洛谷P3953 [NOIP 2017 提高组] 逛公园
算法·深度优先·动态规划
嗨信奥编程13 天前
2023年蓝桥杯青少第十四届蓝桥杯Scratch省赛中级组真题——小狗避障
青少年编程·蓝桥杯
小猫咪怎么会有坏心思呢13 天前
华为OD机考-小明减肥-DFS(JAVA 2025B卷)
java·华为od·深度优先
Yingye Zhu(HPXXZYY)14 天前
P12894 [蓝桥杯 2025 国 Java B] 智能交通信号灯
c++·蓝桥杯
Gyoku Mint15 天前
机器学习×第十二卷:回归树与剪枝策略——她剪去多余的分支,只保留想靠近你的那一层
人工智能·算法·机器学习·数据挖掘·pycharm·回归·剪枝
可可格子衫15 天前
129. 求根节点到叶节点数字之和 --- DFS +回溯(js)
javascript·算法·深度优先