算法第四章总结
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.结对编程
这一次的结对编程总体还是很不错的!可惜速度有点慢,但是感谢我的两位神队友!!!!