代码改变世界

算法第四章总结

2019-11-25 23:40  绮罗生  阅读(127)  评论(0)    收藏  举报

1.贪心算法的理解

贪心算法的理解是和动态规划相反,应该说是对动态规划的一种反向阐述。贪心算法要和动态规划对比来看,贪心算法更多的是从当前优先考虑,考虑当前的最优解,而动态规划是从整体考虑。但是并不是所有情况都能用贪心算法解决,贪心算法需要在某些情况才可以解决。需要满足以下两个性质。一个是贪心选择性质,一个是最优子结构性质。

贪心选择性质,是指所求问题的整体最优解可以通过一系列局部最优的选择来得到,这是其可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。

最优子结构性质,当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。运用贪心策略在每一次转化时都取得了最优解。

 

 

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

汽车每到一个站点就会检查自己的汽油够不够,够就往下一个车站,不够就加油。这类似于多个0-1背包装东西的问题。在当前情况下选出最优解,直到得到最后的最优解。

#include<iostream>
using namespace std;
int main(){ int num,n,t,count,a[10000]; cin>>num>>n; for(int i = 0;i <= n;i++){ cin>>a[i]; } t = num;
count=0;
int i=0; while(i <= n){ if(a[i]<=n) { if(t >= a[i]){ t- = a[i];
i++;
} else { count++; t = num; } }
if(count==0) cout<<"No answer"<<endl;

else cout<<count<<endl; return 0; }

 

 

3.结对编程

这一次的结对编程总体还是很不错的!可惜速度有点慢,但是感谢我的两位神队友!!!!