- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章节-回溯法-习题
课程安排 第5章 回溯法习题课 第5章 回溯法习题 子集和问题 最小长度电路板排列问题 最小重量机器设计问题 运动员最佳匹配问题 无分隔符字典问题 无和集问题 n色方柱问题 整数变换问题 拉丁矩阵问题 排列宝石问题 重复拉丁矩阵问题 罗密欧与朱丽叶的迷宫问题 工作分配问题 独立钻石跳棋问题 智力拼图问题 布线问题 最佳调度问题 无优先级运算问题 世界名画陈列馆问题 世界名画陈列馆问题(不重复监视) 魔方问题 魔方(Rubik’s Cube)问题 算24点问题 算m点问题 双轨车皮编序问题 多轨车皮编序问题 部落卫队问题 虫蚀算式问题 完备环序列问题 离散01串问题 喷漆机器人问题 子集树问题 0-1背包问题 排列树问题 一般解空间搜索问题 最短加法链问题 n2-1谜问题 第5章 回溯法习题 子集和问题 运动员最佳匹配问题 最佳调度问题 离散01串问题 5-1 子集和问题 子集和问题的一个实例为〈S,t〉。其中,S={ x1,x2,…,xn} 是一个正整数的集合,c是一个正整数。 子集和问题判定是否存在S 的一个子集S1,使得 试设计一个解子集和问题的回溯法。 编程任务: 对于给定的正整数的集合S={ x1,x2,…,xn}和正整数c,编程计算S 的一个子集S1,使得 子集和问题 数据输入: 第1行有2个正整数n和c,n表示S的大小,c是子集和的目标值。接下来的1 行中,有n个正整数,表示集合S 中的元素。 结果输出: 输出子集和问题的解。当问题无解时,输出“No solution! ”。 输入示例 5 10 2 2 6 5 4 输出示例 2 2 6 子集和问题算法 类似于装载问题 bool Subsum::backtrack(int i) { //从1开始调用 if (in) { //计算完毕 for (int j=1; j=n; j++) bestx[j] = x[j]; //记录最优解 bestw = cw; if (bestw==c) return true; //满足条件(找到了) else return false; } 子集和问题算法 r -= w[i]; //剩余大小 if (cw+w[i]=c) { //第i个数可以使用 x[i] = 1; //左子树 cw += w[i]; //当前和加上w[i] if (backtrack(i+1)) return true; cw -= w[i]; //准备进入右子树 } if (cw+rbestw) {//上界函数 x[i] = 0; //右子树 if (backtrack(i+1)) return true; } r += w[i]; //右子树无最优解 return false; } 5-4 运动员最佳匹配问题 问题描述: 羽毛球队有男女运动员各n 人。 给定2 个n×n 矩阵P 和Q。P[i][j] 是男运动员i 和女运动员j 配对组成混合双打的男运动员竞赛优势;Q[i][j] 是女运动员i 和男运动员j 配合的女运动员竞赛优势。 由于技术配合和心理状态等各种因素影响,P[i][j] 不一定等于Q[j][i] 。 男运动员i 和女运动员j 配对组成混合双打的男女双方竞赛优势为P[i][j]*Q[j][i] 。 设计一个算法,计算男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。 运动员最佳匹配问题 编程任务: 设计一个算法,对于给定的男女运动员竞赛优势,计算男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。 数据输入: 第一行有1 个正整数n (1≤n≤20)。接下来的2n 行,每行n 个数。前n 行是p,后n 行是q。 结果输出: 男女双方竞赛优势的总和的最大值。 运动员最佳匹配问题 结果输出: 男女双方竞赛优势的总和的最大值。 样例分析 运动员最佳匹配问题算法 解空间是一棵排列树 void pref::Backtrack(int t) { //从1开始回溯 if (tn) Compute(); //构成1次全排列 else for (int j=t; j=n; j++) { //从结点t到叶结点 swap(r[t], r[j]); //将结点j作为当前结点 Backtrack(t+1); swap(r[t], r[j]); //将结点还回去 } } 运动员最佳匹配问题算法 void pref::Compute(void) { //计算当前排列的竞赛优势 for (int i=1,temp=0;i=n;i++) //按题目要求计算 temp += p[i][r[
您可能关注的文档
- 第2章节4色散.ppt
- 第2章节_C语言快速入门-3(周).ppt
- 第2章节书后习题答案.doc
- 第2章节_质量工程的基本原理.ppt
- 第2章节_博弈论简介.ppt
- 第2章节_计算机的基本组成和工作原理.ppt
- 第2章节函数概念基本初等函数7-函数的单调性-配套练习.doc
- 第2章节_线性表.ppt
- 第2章节_8086CPU结构.ppt
- 第2章节实例调试.ppt
- 森林群落发育及演替.ppt
- 2025届江苏省苏州市工业园区中考一模数学卷(含解析).pdf
- 高中历史选择题考试技术(四)考试技巧之逻辑判断 用“全面”的观点 高考历史做题方法指导.pptx
- 10,2酸和碱的中和反应课件--九年级化学人教版下册.pptx
- 2025届江苏省泰州市兴化市中考一模数学试卷(附解析).docx
- 2025届江苏省扬州市中考一模数学试卷.docx
- 2025届江苏省泰州市靖江市中考一模数学试卷(附解析).docx
- 9.3 力与运动的关系 -八年级物理下册课件(苏科版).pptx
- 2025届江苏省中考数学一模试卷(附解析).docx
- 2025年江苏省常熟市中考第一次适应性考试数学试卷(附解析).docx
文档评论(0)