1.对贪心算法的理解:
贪心算法的概念:贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。
贪心算法的基本要素:a.贪心选择性质(问题的整体最优解可以通过一系列局部最优解来达到)b.最优子结构性质(问题最优解包括其子问题的最优解)。
2.请说明汽车加油问题的贪心算法选择:
#include<iostream> using namespace std; /*/题目: 一辆汽车加满油后可行驶 n公里。旅途中有若干个加油站。 设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少。 7 2 3 4 5 1 6 6 /*/ int main() { int i,j,a[1005];//i代表可行使i公里 cin >> i >> j; for(int t=0;t<=j;t++) //输入j+1个数 { cin >> a[t]; } a[j+1]=0; int sum =0,count=0,flag=0; for(int t =0; t<=j;t++) { sum=sum+a[t];//若剩余油量可以到达下一个目的地,则不加油。 if(i-sum<=a[t+1]&&i>=a[t])//若到剩余油量不够到达下一个加油站则加油 。 { sum=0; count++; } if(i<a[t])//若其中有一个目的地的距离超过最大行使距离,做标记。 flag=1; } if(flag==0) cout << count<<endl; if(flag==1) cout <<"No Solution!"<<endl; return 0; }
3.请说明在本章学习过程中遇到的问题及结对编程的情况:
结对情况:相互督促,主要会一起商量讨论结对的编程题。