算法第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 }
三、本章学习过程中遇到的问题及结对编程的情况
最大的问题就是如何选择贪心策略。像汽车加油问题这一题的策略就比较简单,而会场安排问题因为上课讲过类似的题目,所以选用了相同的贪心策略,结果发现该策略时错误的,所以贪心策略的选择要谨慎思考。
我队友当初也是用了这个错误的策略,经过我们讨论后找到了反例,并重新选择贪心策略,最终得到问题的解。