算法第四章作业
一 . 对贪心算法的理解
贪心算法的基本要素是:贪心选择性质和最优子结构性质
贪心选择每次选取当前最优解,可以依赖以往的选择,但绝不依赖于将来所做的选择,也不依赖于子问题的解。
贪心算法通常以自顶向下的方式进行。
二 . 汽车加油问题的贪心选择性质
汽车应选择在能到达的前提下离自己最远的加油站进行加油
代码:
#include <iostream> using namespace std; void car(int d[], int n, int k) { int num = 0; for(int i = 0;i <= k;i++) { if(d[i] > n) { cout << "No Solution!"; return; } } for(int i = 0,s = 0;i <= k;i++) { s += d[i]; if(s > n) { num++; s = d[i]; } } cout << num; } int main() { int i,n,k; int d[1000]; cin >> n >> k; for(i = 0;i <= k;i++) cin >> d[i]; car(d,n,k); }
三 . 遇到的问题以及结对编程情况
这道题相对容易,需要注意一些小的细节问题,比如无法到达目的地,则输出“No Solution!”。
结对编程和同伴的配合相比之前进步很多。