算法第四章作业
1、对贪心算法的理解
贪心算法(又称贪婪算法)是指,在对问题进行求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。可是,更优的贪心算法应该在我们不断列举反例后进行新的贪心选择,后得到一个对整个过程来说也是最优解的算法。
贪心算法的要素包括贪心选择和最优子结构。
2、汽车加油问题的贪心选择性质
汽车加油问题的贪心选择就是如果最后一个加油站里目的地的距离小于或等于汽车加满油后可行驶的公里数n则在循环里对数组里存的各个加油站之间的距离求和,后判断是否比n大,如果大了则应该停下,加油,然后sum就要重新赋值,进行再一次的判断是否需要加油。
其代码实现为:
if(a[k]<=n){
for(int i=0;i<k+1;i++){
sum += a[i];
if(sum>n){
count++;
sum=a[i];
}
}
没法到达目的地即最后一个加油站里目的地的距离大于汽车加满油后可行驶的公里数n则:
else{
cout<<"No Solution!"<<endl;
return 0;
}
3、在本章学习过程中遇到的问题及结对编程的情况
经过快一个学期的结对编程,收货挺大的,双方能更好的交流自己的想法,特别是需要进行反例求证的贪心算法,在结对编程中,能通过谈论寻找适合整体的贪心选择。