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

数的划分(dfs)

题目描述

将整数 n 分成 k 份,且每份不能为空,任意两个方案不相同(不考虑顺序)。

例如:n=7,k=3,下面三种分法被认为是相同的。

1,1,5;
1,5,1;
5,1,1.

问有多少种不同的分法。

输入格式

n,k (6<n≤200,2≤k≤6)

输出格式

1 个整数,即不同的分法。

输入输出样例

输入 #1复制

7 3

输出 #1复制

4

说明/提示

四种分法为:
1,1,5;
1,2,4;
1,3,3;
2,2,3.

【题目来源】

NOIP 2001 提高组第二题

#include<bits/stdc++.h>
using namespace std;

int n,k;
int ans;
int sum;//保存已经搜索到的数的和

void dfs(int x,int dep){
	if(dep==k-1){ //当深度达到 k-1 时就不用搜了 因为最后一个值已经确定了
		ans++;
		return;
	}
	sum+=x;
	for(int i=x;i<=(n-sum)/(k-dep);i++){ //i 的值应该大于等于他的上一个数,小于等于 剩余的数/剩余的数量(向下取整)
		dfs(i,dep+1);
	}
	sum-=x;//恢复原状态
}

int main(){
	cin>>n>>k;
	for(int i=1;i<=n/k;i++){
		sum=0;//每次对一个新的数进行 dfs 之前,先清空 sum
		dfs(i,1);
	}
	cout<<ans<<endl;
	return 0;
} 	

http://www.dtcms.com/a/85391.html

相关文章:

  • OpenCV图像拼接项目指南
  • 健康养生:铺就活力生活之路
  • CMake-环境变量介绍
  • 第42章:Secret管理与敏感信息保护
  • 2.go基础语法
  • wpf 后台使用图标字体
  • 快速创建 Java 8 兼容的 Spring Boot 项目(阿里云脚手架)
  • 【模拟面试】计算机考研复试集训(第十三天)
  • wordpress主题使用中常见错误汇总
  • 第二十一章:模板与继承_《C++ Templates》notes
  • MyBatis-Plus(Ⅱ)基本CRUD
  • 用户模块——升级swagger文档更漂亮
  • Git的认识安装及创建配置本地仓库
  • Shebang行的写入
  • qt 对QObject::tr()函数进行重定向
  • 【工程实践/源码阅读】批量文件处理步骤以及如何并行处理
  • Ubuntu下用QEMU模拟运行OpenBMC
  • 解决address already in use报错:如何查看占用某个端口的程序并杀死
  • 【uni-app】引用公共组件
  • 数据预处理流程与关键步骤解析
  • React 开发环境搭建
  • 多个内容滑动轮播图【前端】
  • 第十六次CCF-CSP认证(含C++源码)
  • c++图论(五)之判断图连通
  • 浪潮信息再塑AI+OS格局,联手龙蜥共筑未来
  • 元数据管理系列(一):元数据管理的前世今生
  • 实战3. 利用Pytorch预写好ResNet-18预测电视剧《辛普森一家》中的人物——图像分类
  • Ceph集群2025(Squid版)导出高可用NFS集群(上集)
  • 第一人称动作识别文献阅读——LSTA:用于自我中心动作识别的长短期注意力机制
  • 第二章 | 智能合约 区块链基础知识{介绍篇}