- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
*/35 四、分治法 Divide and Conquer 对于一个输入规模为 n 的函数或问题,用某种方法把输入分割成 k(1k≤n)个子集,从而产生 L个子问题,分别求解这 L 个问题,得出 L 个问题的子解,再用某种方法把它们组合成原来问题的解。若子问题还相当大,则可以反复使用分治法,直至最后所分得的子问题足够小,以至可以直接求解为止。 如:排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… */35 13 65 27 50 38 49 55 i 小的 大的 38 快速排序思路分析 */35 13 65 27 50 38 49 55 j i 13 38 65 27 50 49 55 j j i i i j 13 65 49 27 38 55 i j j j 50 一趟快排 */35 首先选一个轴值(即比较的基准),通过一趟排序将待排序记录分割成独立的两部分,前一部分记录的关键字均小于或等于轴值,后一部分记录的关键字均大于或等于轴值,然后分别对这两部分重复上述方法,直到整个序列有序。 基本思想 */35 本讲小结 (1)稳定伴侣问题的算法思路 (2)广义表的定义及存储 注意:请及时完成数组和广义表的作业。 * P129,char String::operator [](int pos) const; 修改为 char operator [](int pos) const; * 华中农业大学理学院 章 英 zy@mail.hzau.edu.cn 数据结构与算法 */35 第12讲 数组和广义表 本讲知识点: (1)掌握稳定伴侣问题的算法实现 (2)了解广义表的定义 (3)掌握广义表的两种存储方式 重点:广义表的存储 难点:稳定伴侣问题的算法 */35 一、稳定伴侣问题 设有n个男孩m1,m2,…,mn与n个女孩w1,w2,…, wn。 每一个男孩mi都依照他喜爱这n个女孩的程度列成一张表,最喜欢的女孩排在第1位,最不喜爱的女孩排在第n位;同样地,每个女孩wi也按照她喜爱n个男孩的程度列成一张表。 要求把男孩与女孩进行配对,使得:如果mp与wq在一对的话,那么满足如下条件: 对mp的喜爱表格中排在wq之前的女孩而言,她的伴侣在她的表格中一定排在mp之前。 对wq的喜爱表格中排在mp之前的男孩而言,他的伴侣在他的表格中一定排在wq之前。 */35 不稳定情况 m w Pman(m) Pwoman(w) 男女伴侣 男女伴侣 */35 分析问题 第一步:初始化关系矩阵 如: int m[MAX_SIZE][MAX_SIZE] = { {2 ,4, 1, 3}, {3, 1, 4, 2}, {2, 3, 1, 4}, {4, 1, 3, 2} }; int w[MAX_SIZE][MAX_SIZE] = { {2 ,1, 4, 3}, {4, 3, 1, 2}, {1, 4, 3, 2}, {2, 1, 4, 3} }; */35 Matrixint man(n, n), woman(n, n); // 矩阵类模板 templateclass ElemType class Matrix { protected: ElemType *elems; // 存储矩阵元素 int rows, cols; // 矩阵行数和列数 public: ElemType operator()(int i, int j); // 重载函数运算符!!! */35 分析问题 第二步:将男孩入等待栈,准备依次配对; LinkStackint waiting; int next[MAX_SIZE + 1]; for (i = 1; i = n; i++) { // 对于第i个男孩 waiting.Push(i); // 男孩i进入等待栈 next[i] = 1; // 刚开始时,男孩i找的对象是表格中的第1个女孩 } */35 分析问题 第三步:对女孩构建rank表。 如果woman(i, j)=w,则rank(i,w)=j Matrixint rank(n, n); for (i = 1; i = n; i++) // 对于第i个女孩 { for(j = 1; j = n; j++) // 对于第j个男 { int w = woman(i, j); rank(i, w) = j; } } */35 分析问题 第四步,开始配对。 2 4 1 3 3 1 4 2 2 3 1 4 4 1 3 2 m w 2 1 4 3 4 3 1 2 1 4 3
您可能关注的文档
最近下载
- 《城镇排水管道检测与评估技术规程》.pdf VIP
- 统编版《道德与法治》六年级下册第8课《科技发展 造福人类》精品课件(含视频).pptx
- 2025年党支部书记学习教育专题党课中央八项规定专题党课讲稿(严守中央八项规定精神,争做新时代合格党员;从中央八项规定精神看党员干部的责任与担当).docx VIP
- 3.3 探秘澜沧江—湄公河流域的河流地貌课件高中地理鲁教版(2019)必修一.pptx
- GB50666-2011混凝土结构工程施工规范.doc VIP
- 现代畜牧业发展理论与实践(畜牧业发展历程).ppt VIP
- 座便器检验报告.pdf
- 线上音乐特色作业说民乐-奏民乐设计.docx VIP
- QB∕T 5362-2019 玻璃器皿单位产品能源消耗限额(可复制版).pdf
- TCESA 1177-2021 非结构化数据应用分级要求.pdf VIP
文档评论(0)