算法第四章作业
- 你对贪心算法的理解
- 请说明汽车加油问题的贪心选择性质
- 请说明在本章学习过程中遇到的问题及结对编程的情况
一、贪心算法的理解
选择一个贪心策略并在解决每一步子问题的时候都遵循该策略找到当前情况的最优解而不需要考虑这样的做法否能得到整体最优解(即贪心策略不是对所有问题都能得到整体最优解)。
二、请说明汽车加油问题的贪心选择性质
汽车加油的贪心选择策略是:“最远能到达”。即一次加油最远能到达第N个加油站,而刚好不能够到达第N+1个加油站,那么在当前的解就选择前往第N个加油站。
核心代码演示:
1 for (int i = 0; i < station + 1; ++i) { 2 if(a[i] <= gas) { //先不加油 3 gas -= a[i]; 4 } 5 else if(a[i] <= full) {//加油再试试 6 gas = full; 7 gas -= a[i]; 8 destination++; 9 } 10 else { //实在不行了就break 11 destination = -1; 12 break; 13 } 14 }
三、请说明在本章学习过程中遇到的问题及结对编程的情况
本章学习过程中遇到的最大的问题就是在决定贪心选择策略的时候需要考虑很多方面,不是随便一个贪心策略都能使用的,就像选点问题,应该是先根据线段的右端点进行排序而不是左端点。
结对编程的情况:我们在面对较难的问题时会一同解决,在该次实验题(删数问题)中,我们提出不同的解决方案,相互比较,终于找到答案。应该说我们的思维的火花碰撞促进了我们的编程水平的进步。