算法第四章作业
一、对贪心算法的理解
贪心算法并不从整体最优考虑,他做出的选择是局部情况下的最优选择,我们希望贪心算法得到的整体结果也是最优的,他不能对所有问题产生整体最优解,但是能对大部分问题产生整体最优解,就算不能得到整体最优解,结果跟最优解相差不大。当局部最优和全局最优解一致性被证明后可使用贪心算法。
二、汽车加油问题贪心算法
程序代码:
#include<iostream>
using namespace std;
int main()
{
int n;
int k;
int i;
int a[1000];
int times=0;
cin>>n>>k;
int oil=n;
for(i=0;i<k+1;i++)
{
cin>>a[k-i];
}
for(i=0;i<k+1;i++)
{
if(a[k-i]>n)
{
cout<<"No Solution!";
return 0;
}
}
for(i=0;i<k+1;i++)
{
if(a[i]<=oil)
{
oil=oil-a[i];
}
else
{
oil=n-a[i];
times++;
}
}
cout<<times<<endl;
return 0;
}
主要思想:
从第一个加油站开始,如果两个加油站之间的距离大于车辆可以行驶的距离,输出“No Solution!”,往后推进,如果可以行驶到下一个加油站,加油次数不变,如果计算到不能行驶到下一个加油站,在本加油站加油,加油次数加一,直到到达终点。
三、结对编程感想
和小伙伴的合作很成功,我们共同解决了第一道问题,还有很多思想没有理解透彻,希望可以一起解决问题,共同合作提升自己的能力。
浙公网安备 33010602011771号