首页 > 编程语言 > 详细

【算法】第四章作业

时间:2018-12-02 18:53:50      阅读:172      评论:0      收藏:0      [点我收藏+]

1. 你对贪心算法的理解(2分)

贪心算法总是做出在当前看来最好的选择。每一步当要做出选择时,它就会以唯一一个“贪心”作为标准,例如从具体的会场安排问题,他总是以会场的“最早开始时间”作为优先的选择条件;又如0-1背包问题,它总是以“单位价值”作为优先选择条件。

贪心算法的两个基本要素:1.贪心选择性质,所求的问题的整体最优解可以通过一系列局部最优解。因此,要注意使用贪心算法解决问题时,首先要证明该问题是否具有贪心选择性质2.最优子结构性质,当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。

与动态规划算法不同的是,动态规划要通过比较再来做决策(三思而后行),而贪心算法时一直局部取优来求解的(从一而终)。

2. 请说明汽车加油问题的贪心选择性质(2分)

题目:一辆汽车加满油后可行驶 n公里。旅途中有若干个加油站。设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少。解析:加油次数最少,意味着能不加油就不加油,只要在此站的油量能维持开到下一站就行了。因此有

for(int i=0;i<k+1;i++)

{

if(n<a[i])

{

cout<<"No Solution"<<endl;//满油油量小于该段行程所需油量,直接判断无法到达目的点。

return 0;

}

else{

if(t>=a[i])//此问题“贪心选择”就是油量大于下一个行程所需油量,就不加油。

{

t-=a[i];

break;

}

else

{

num++;

t=n-a[i];//t为当前汽车油量

}

}

}

3. 请说明在本章学习过程中遇到的问题及结对编程的情况(1分)

一开始编程时,没有注意理清题目的内容,题目说到加满油,之后其实代码里应该就是t=n-a[i],但是我之前忽视了这个判断,写的时t=t+n-a[i];导致无法得到正确结果,实际就是没有审好题和联系实际场景。另外结对编程,彼此合作还是一如既往的愉快,平时多听听对方的想法,共同讨论。

 

 

【算法】第四章作业

原文:https://www.cnblogs.com/Jergens/p/10054528.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!