算法第4章作业

一、对贪心算法的理解

在对问题求解时,总是做出在当前看来是最好的选择。而不从整体最优上加以考虑,得到的是在某种意义上的局部最优解。只有当局部最优解与全局最优解一致时,才能用贪心法求解。
因而,贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,策略的选择有很多种,但并不一定都正确。选择策略时,可以尝试提出反例,若找不到反例,可以尝试简
单证明一下该贪心策略的正确性。
二、车加油问题的贪心选择性质
 
贪心策略:若当前油量能到达下一个目的地,则行驶;否则,在当前加油站加油。
 1     int count=0,sum=0;
 2     for(int i=0;i<=k;i++)
 3         {
 4         if(a[i]>n) {
 5             cout<<"No Solution!";
 6             return 0;
 7         }
 8         sum +=a[i];
 9         if(sum >n) {
10             sum=a[i];
11             count++;
12         }
13         }

三、本章学习过程中遇到的问题及结对编程的情况

最大的问题就是如何选择贪心策略。像汽车加油问题这一题的策略就比较简单,而会场安排问题因为上课讲过类似的题目,所以选用了相同的贪心策略,结果发现该策略时错误的,所以贪心策略的选择要谨慎思考。

我队友当初也是用了这个错误的策略,经过我们讨论后找到了反例,并重新选择贪心策略,最终得到问题的解。

posted @ 2018-12-01 15:01  underdestiny  阅读(570)  评论(0编辑  收藏  举报