蓝桥杯备考: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;
}
相关推荐
wabs6661 天前
关于图论【深度优先搜索的理论基础】
算法·深度优先·图论
Zachery Pole2 天前
CCF-CSP备战NO.6【栈】
算法·深度优先
网络与设备以及操作系统学习使用者2 天前
生成树防环,Super-VLAN省IP,端口安全护网络
运维·网络·学习·深度优先
Jayden_Ruan2 天前
C++组合的输出
c++·算法·深度优先
z小猫不吃鱼3 天前
模型剪枝经典论文精读:DepGraph: Towards Any Structural Pruning
算法·机器学习·剪枝
中微极客4 天前
剪枝与量化:让YOLO在边缘设备上高效部署
算法·yolo·剪枝
z小猫不吃鱼4 天前
ResRep: Lossless CNN Pruning via Decoupling Remembering and Forgetting
算法·cnn·剪枝
Ivanqhz9 天前
NFM(神经因子分解机)
开发语言·javascript·人工智能·算法·蓝桥杯
山峰哥9 天前
数据库工程与索引策略实战指南‌
服务器·数据库·sql·oracle·深度优先
Tisfy9 天前
LeetCode 2685.统计完全连通分量的数量:DFS求每个连通块的边点数
算法·leetcode·深度优先··题解·连通图·全连通分量