- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
会计学;贪 心 算 法;贪心算法意为见到好的就抓住不放,用贪心算法求解问题,一般可以获得比较好的求解速度。本问题的具体做法为:先计算物品的价值密度,并把物品按价值密度从大到小的顺序排列:;function [sch,tolval,tolwei]=backpack(maxwei,weight,value)
n=size(weight,2);sch=zeros(1,n);
p=value./weight;
[a,b]=sort(p);%a从小到大排序后的向量,b是对应元素原始下标
b=b(n:-1:1);tw=0;%已装入背包的物品重量
for i=1:n
if (tw+weight(b(i)))=maxwei
tw=tw+weight(b(i));
sch(b(i))=1;
end
end
tolwei=tw;tolval=sum(value(find(sch))); ;?? 归 算 法;;问题分析:;假如你手脚比较麻利,1秒钟移动一片, 那么:
n=1时,1秒钟可以完成任务
n=2时,3秒钟可以完成任务
n=3时,7秒钟可以完成任务
…………………………………….
n=8时,4.25分钟可以完成任务
…………………………………….
n=64时,需时18,446,744,073,709,551,615秒,相当于5846亿年,比太阳的寿命都长(太阳的寿命不超过200亿年)。;首先构造数据结构。对金片,从上到下,分别有用整数 1,2,3,……,n表示;三根宝石柱,从左到右分别用1,2,3表示。对于每一次移动,我们用一个行向量表示,例如把编号为4的金片从柱1移到柱3时,我们用向量[4 1 3]表示。
本算法在hanoi.m文件中用两个函数实现,其中一个是主函数,定义如下:
function [tolnum,scheme] =
hanoi(disknum,beginpillar,midpillar,endpillar)
返回参数tolnum表示移到次数,scheme是移动方案矩阵,一行表示一次移动方式。输入参数disknum表示本次移动的金片数(即最上面的disknum个金片),beginpillar表示金片所在原始柱,endpillar表示目标柱,midpillar表示中间柱(即辅助柱子)。;第二个是子函数,外部不能调用,只供主函数hanoi调用。该函数是实现递归生成的关键,而主函数hanoi实际上只起到了一个转换参数的作用,其定义如下:
function temphanoi
(disknum,beginpillar,midpillar,endpillar)
该子函数没有返回参数,它使用了一个全局变量与主函数共享数据。输入的四个参数与主函数的四个输入参数含义相同。
下面演示了三个金片从柱1移动到目标柱3的过程:;在命令窗口输入: [n,s]=hanoi(3,1,2,3);function [tolnum,scheme] = hanoi(disknum,beginpillar,midpillar,endpillar)
global SCHEME_HANOI%全局变量,子函数可以直接访问
SCHEME_HANOI=[];%设置为空
temphanoi(disknum,beginpillar,midpillar,endpillar);
tolnum=size(SCHEME_HANOI,1);%取得行数,即移动次数
scheme=SCHEME_HANOI;
%子函数, 只能在本程序访问, 外部不可见
function temphanoi(disknum,beginpillar,midpillar,endpillar)%子函数
global SCHEME_HANOI%声明使用
if disknum==1%添加一行移动方式
SCHEME_HANOI=[SCHEME_HANOI;1,beginpillar,endpillar];
else%下面一句相当于把上面n-1片移到中间柱子
temphanoi(disknum-1,beginpillar,endpillar,midpillar);
%然后把最后一片移到目标柱子上
SCHEME_HANOI=[SCHEME_HANOI;disknum,beginpillar,endpillar];
%把中间当作第一根, 原来第一根当作中间柱子, 继续移动
temphanoi(disknum-1,midpillar,beginpillar,endpillar);
end;回 溯 算 法;;n皇后问题;现分析在第
您可能关注的文档
最近下载
- 月下独酌(其一).pptx
- 0.1元文档测试下载-不退款.pdf
- 技嘉 主板 Socket 1151 Z390 DESIGNARE 使用手册.pdf
- 第1章 绪论PPT;公共事业管理概论(第三版) 课件 朱仁显 人大社.ppt
- 《高中语文教学中的杜甫诗歌美育实施研究》课题设计论证 .pdf
- 2022年度小学英语新课标试题及答案.docx VIP
- 2022小学英语新课标试题及答案(共三套).docx VIP
- 2024年全国行业职业技能竞赛第三届全国人工智能应用技术技能大赛河北省选拔赛理论题库及答案(1200题)(学生组职工组).docx VIP
- 英语新课标试题.docx VIP
- (高清正版行业标准)ISO_IEC29147-2018.pdf
文档评论(0)