当前位置: 首页 > article >正文

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

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

#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;
}


http://www.kler.cn/a/568032.html

相关文章:

  • 机器学习数学基础:33.分半信度
  • 区块链的原理、技术与应用场景
  • 金融项目管理:合规性与风险管理的实战指南
  • C#上位机--关键字
  • 松灵机器人地盘 安装 ros 驱动 并且 发布ros 指令进行控制
  • [Windows] 批量为视频或者音频生成字幕 video subtitle master 1.5.2
  • 网络安全深度剖析
  • Tomcat 8 安装包下载
  • 2025影视站群程序实战:search聚合版/无缓存泛页面刷新不变
  • github上传代码(自用)
  • Grok 3 vs. DeepSeek vs. ChatGPT:2025终极AI对决
  • C语言中的内存函数使用与模拟实现
  • Python面试(八股)
  • MyBatis-Plus 为简化开发而生【核心功能】
  • 【React】事件绑定的细节
  • 地基JDK8新特性之Lambda 表达式和Stream 流操作
  • 怎么进行mysql的优化?
  • 秒杀系统的常用架构是什么?怎么设计?
  • 实战-使用 Playbook 批量部署多台 LAMP 环境
  • 智能DNS是干嘛的?