- 1
- 0
- 约1.73万字
- 约 45页
- 2019-12-31 发布于湖北
- 举报
第五章 搜索与回溯算法 【例9】数的划分(NOIP2001) 【问题描述】 将整数n分成k份,且每份不能为空,任意两种分法不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法。 【输入格式】 n,k (6n≤200,2≤k≤6) 【输出格式】 一个整数,即不同的分法。 【输入样例】 7 3 【输出样例】 4 { 4种分法为:1,1,5;1,2,4;1,3,3; 2,2,3 说明部分不必输出 } 【算法分析】 方法1、回溯法,超时,参考程序如下。 #includecstdio #includeiostream #includecstdlib using namespace std; int n,i,j,k,rest,sum,total; int s[7]; int main() { cout Input n k; cin n k; total = 0; s[1] = 0; i = 1; while (i) { s[i]++; if (s[i] n) i--; else if (i == k) { sum = 0; for (j = 1; j = k; j++) sum += s[j]; if (n == sum) total++; } else { rest -= s[i]; i++; s[i] = s[i-1] - 1; } } cout total; system(pause); return 0; } 方法2、递归,参考程序如下。 #includecstdio #includeiostream #includecstdlib using namespace std; int n,k; int f(int a,int b,int c) { int g = 0,i; if (b == 1) g = 1; else for (i = c; i = a/b; i++) g += f(a-i,b-1,i); return g; } int main() { cout Input n,k:; cin n k; cout f(n,k,1); system(pause); return 0; } 方法3、用动态循环穷举所有不同的分解,要注意剪枝,参考程序如下。 #includecstdio #includeiostream #includecstdlib using namespace std; int n,k,total; int min(int x,int y) { if (x y) return x; else return y; } void select(int dep,int rest,int last) { int i; if (dep == 0) total++; else for (i = min(rest-dep+1,last); i = rest/dep; i--) select(dep-1,rest-i,i); } int main() { cout Input n,k:; cin n k; total = 0; select(k,n,n); cout total; system(pause); return 0; } 方法4、递推法 首先将正整数n分解成k个正整数之和的不同分解方案总数等于将正整数n-k分解成任意个不大于k的正整数之和的不同分解方案总数(可用ferror图证明之),后者的递推公式不难得到,参考程序如下。 #includecstdio #includeiostream #includecstdlib #i
您可能关注的文档
- 第1节 物质跨膜运输的实例资料.ppt
- 第1章:什么是企业想法资料.ppt
- 第1章节 信息安全标准概述资料.pdf
- 第2讲_公司治理概论资料.ppt
- 第2课-企业的生产与经营资料.ppt
- 第2章 企业战略管理资料.pptx
- 第2章节 metal fighter(mf)机器人资料.pdf
- 第2章节 关系模型跟关系数据库资料.ppt
- 第3页--有限政府理论的现代渊源资料.pdf
- 第3章_公共关系主体社会组织资料.ppt
- (正式版)DB51∕T 1867-2014 《袋栽黑木耳生产技术规程》.docx
- (正式版)DB51∕T 2413-2023 《油橄榄密植丰产栽培技术规程》.docx
- (正式版)DB51∕T 2436-2017 《川菜东坡一品肉烹饪工艺技术规范》.docx
- (正式版)DB51∕T 2396-2017 《农村电子商务服务站(点)服务与管理规范》.docx
- (正式版)DB51∕T 2419-2017 《桢楠扦插育苗技术规程》.docx
- CN105145773B 一种无花果曲奇饼干及其制作方法 (江苏农林职业技术学院).docx
- CN105203825A 微测量电极的制作方法和热电势的测量方法及相关装置 (国家纳米科学中心).docx
- CN105137533B 一种啁啾光纤光栅及其制作方法 (南京航空航天大学).docx
- (正式版)DB51∕T 2453-2018 《巴山新居公共管理指南》.docx
- (正式版)DB51∕T 1892-2014 《川西北地区沙化土地治理技术规程》.docx
原创力文档

文档评论(0)