算法第四章作业

1.你对贪心算法的理解

贪心算法指通过一系列的选择来得到问题的解,它所做的每一个选择都是当前状态下的局部最好选择,即(局部最优解 > 全局最优解)。一般来说,凡是经过数学归纳法证明可以采用贪心法的情况都应该采用,因为其具有高效性。同时,如果一个问题具有贪心选择性质和最优子结构性质,那么使用贪心法来对其求解总能求得最优解。

2.请说明汽车加油问题的贪心选择性质

“最远加油站优先”,即确保每次加油后汽车行驶的距离最长。

#代码

int greedy(vector<int>x, int n){
  int sum = 0,k=x.size();
  for(int j=0;j<k;j++)
  if(x[j]>n){
    cout<<"No Solution!"<<endl;
    return -1;
  }
  for(int i=0,s=0;i<k;i++){
    s+=x[i];
    if(s>n){sum++;s=x[j];}
  }
  return sum;
}

3.请说明在本章学习过程中遇到的问题及结对编程的情况

因为这道题相对来说比较基础,因此我和同伴结对时很快便确定了算法。因为做的比较快,第一次提交时忽略了输出“No Solution!”,这让我吸取了教训,不能因为题目不难就掉以轻心。

猜你喜欢

转载自www.cnblogs.com/RicardoY/p/10030939.html