news 2026/5/3 22:46:27

洛谷 P1025 [NOIP 2001 提高组]:数的划分 ← DFS + 剪枝

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
洛谷 P1025 [NOIP 2001 提高组]:数的划分 ← DFS + 剪枝

【题目来源】
https://www.luogu.com.cn/problem/P1025

【题目描述】
将整数 n 分成 k 份,且每份不能为空,任意两个方案不相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5;
1,5,1;
5,1,1。
问有多少种不同的分法。

【输入格式】
n, k(6<n≤200, 2≤k≤6)。

【输出格式】
1 个整数,即不同的分法。

【输入样例】
7 3

【输出样例】
4

【数据范围】
6<n≤200, 2≤k≤6

【算法分析】
● 剪枝策略能够大幅减少搜索范围,
避免无意义的深度遍历与回溯,压缩时间开销,显著优化 DFS 枚举、组合排列、路径规划等问题的运行效率,是深度优先搜索中提升算法性能的关键优化手段。
● 代码关键要素解析
// cur:当前已经分好的份数
// sum:当前分出来的数的总和
// pre:
下一份允许选取的最小值(保证非递减,避免重复方案)
// 剪枝1:
if(sum>n) return;→ 当前总和已经超过 n,直接返回。
// 剪枝2:
int i=pre;→ 保证非递减,从 pre 开始,避免重复方案。
// 剪枝3:
i*(k-cur)+sum<=n→ 剩下份数全取 i 也不会超 n,否则剪枝。
// dfs(0,0,1); → 初始状态:已分 0 份,总和 0,下一份允许选取的最小值为 1。

【算法代码】

#include <bits/stdc++.h> using namespace std; int n,k,ans; void dfs(int cur,int sum,int pre) { if(sum>n) return; //Pruning 1 if(cur==k) { if(sum==n) ans++; return; } //Pruning 2~3 for(int i=pre; i*(k-cur)+sum<=n; i++) { dfs(cur+1,sum+i,i); } } int main() { cin>>n>>k; dfs(0,0,1); cout<<ans<<endl; return 0; } /* in:7 3 out:4 */



【参考文献】
https://www.luogu.com.cn/problem/solution/P1025



版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 22:44:41

构建高质量土耳其语NLI数据集TrMNLI的技术实践

1. 项目背景与意义自然语言推理&#xff08;Natural Language Inference, NLI&#xff09;作为自然语言处理领域的基础任务&#xff0c;旨在判断两个句子之间的逻辑关系&#xff08;蕴含、矛盾或中立&#xff09;。2018年诞生的多语言NLI数据集XNLI将研究视野扩展到英语之外的1…

作者头像 李华
网站建设 2026/5/3 22:41:25

大模型推理优化:LT-Tuning框架与思维链技术解析

1. 项目概述&#xff1a;当大模型学会"三思而后行"在自然语言处理领域&#xff0c;我们常常遇到这样的困境&#xff1a;大语言模型在单轮推理中表现优异&#xff0c;但在需要多步逻辑推导的复杂任务中却频频"翻车"。这就像让一个记忆力超群的学生参加数学竞…

作者头像 李华
网站建设 2026/5/3 22:39:28

2026年紫光国微数字IC设计笔试题带答案

考试时间:90分钟  总分:100分 一、单选题(每题3分,共24分) 关于异步复位,以下做法正确的是: A. 直接使用异步复位,无需任何处理 B. 异步复位释放时需同步到时钟沿 C. 异步复位只能用于仿真,不可综合 D. 异步复位不能与同步复位混用 答案:B (异步复位同步释放) …

作者头像 李华
网站建设 2026/5/3 22:39:27

使用Hermes Agent时如何将其后端切换至Taotoken平台

使用 Hermes Agent 时如何将其后端切换至 Taotoken 平台 1. 准备工作 在开始配置之前&#xff0c;请确保您已经拥有 Taotoken 平台的 API Key 和想要使用的模型 ID。您可以在 Taotoken 控制台的「API 密钥」页面创建新的密钥&#xff0c;并在「模型广场」查看可用的模型列表及…

作者头像 李华