蓝桥杯备赛-DFS-数的划分

news/2025/3/30 7:47:12/

题目描述

将整数 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.

#include<iostream>
#include<vector>
int n, k;
int ans=0;
int start=1;//记录前一个数字,保证数列是递增的
int sum = 0;
using namespace std;
void dfs(int x) {if (x == k+1) {if (sum == n) {ans++;}//要进行判断,比如n为7时,1,1,1就是不满足的return;}for (int i = start; i <= n-sum; i++) {//i <= n-sum可以进行剪枝,数列是递增的,后面的数字是越来越大的,比如n为7时,1,4再往后面循环1,4,4,和是9超过了7,1,4,5更不用说,所以是会被剪掉的start = i;sum += i;dfs(x + 1);sum -= i;//记得返回,回溯后上一层还要继续用}
}
int main() {cin >> n >> k;dfs(1);cout << ans;return 0;
}


http://www.ppmy.cn/news/1583501.html

相关文章

java 配置日志文件

一、Logback日志配置 1、引入 logback 依赖 在Maven项目的pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.30</version> </dependency>…

锐捷EWEB路由器 timeout.php任意文件上传漏洞(DVB-2025-9003)

免责声明 仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 一:产品介绍 锐捷EWEB路由器是锐…

ReentrantLock

ReentrantLock为可重入锁,底层是AQS实现的. ReentrantLock有两种模式,一种是公平锁,一种是非公平锁 公平锁下等待线程入队后会严格按照队列顺序执行 非公平锁模式下等待线程入队列后有可能会出现插队情况 公平锁 第一步:获取状态的state的值 如果state 0即代表锁没有被其…

easyExcel2.2.10中为0数据显示为空

在 EasyExcel 2.2.10 中&#xff0c;如果希望将数值为 0 的数据在 Excel 中显示为空&#xff08;即不显示 0&#xff09;&#xff0c;可以通过以下方法实现&#xff1a; 1. 使用 ExcelProperty 的 format 参数 通过设置单元格格式为 #&#xff08;# 会忽略 0&#xff09;&…

字节跳动春招研发部笔试题解

字节跳动春招研发部笔试题 1.万万没想到之聪明的编辑 我叫王大锤&#xff0c;是一家出版社的编辑。我负责校对投稿来的英文稿件&#xff0c;这份工作非常烦人&#xff0c;因为每天都要去修正无数的拼写错误。但是&#xff0c;优秀的人总能在平凡的工作中发现真理。我发现一个发…

力扣32.最长有效括号(栈)

32. 最长有效括号 - 力扣&#xff08;LeetCode&#xff09; 代码区&#xff1a; #include<stack> #include<string> /*最长有效*/ class Solution { public:int longestValidParentheses(string s) {stack<int> st;int ans0;int ns.length();st.push(-1);fo…

第十三章:优化内存管理_《C++性能优化指南》_notes

优化内存管理 一、内存管理基础概念二、自定义分配器三、智能指针优化重点知识代码示例&#xff1a;智能指针性能对比 四、性能优化关键点总结多选题设计题答案与详解多选题答案设计题示例答案&#xff08;第1题&#xff09; 一、内存管理基础概念 重点知识 动态内存分配开销…

go的参数传递都是值传递,但切片需要注意

根据之前学习python和java的经验&#xff0c;每次学习一门新语言时&#xff0c;一定要搞清楚方法的参数传递是值传递&#xff0c;引用传递还是指针传递。 主要原因就是需要知道&#xff0c;某种类型的数据传递给某个方法后&#xff0c;方法里面对它的修改是否会影响到这个数据本…