算法第四章作业
1.你对贪心算法的理解
从初始解开始出发,每次选择都是选择最佳的,从而达到整体较好的效果,大部分情况下得到的解跟最优解相近,不过在某些情况下跟最优解相差较大。
2.请说明汽车加油问题的贪心选择性质
刚开始油是满的,然后出发时要比较车的剩余油量与去下一站的耗油量的大小,如果剩余量大则可以去下一站并减去耗油量,如果剩余量小则把剩余量重置为满油再进行比较。
代码
#include <iostream>
using namespace std;
void findAns(int a[],int n,int k){
int num = 0;
int remain = n;
for(int i = 0;i<=k;i++){
if(a[i]<=remain){
remain -= a[i];
}else{
i--;
remain = n;
num++;
}
}
cout<<num;
}
int main(){
int n,k;
cin>>n>>k;
int a[1005];
for(int i = 0;i<=k;i++){
cin>>a[i];
if(a[i]>n){
cout<<"No Solution!"<<endl;
return 0;
}
}
findAns(a,n,k);
return 0;
}
3.请说明在本章学习过程中遇到的问题及结对编程的情况
删数问题困扰了我们好长时间,我们用构造法来求解的,我编程还是太少了,总是出现各种各样的小错误,浪费了大量的时间。还有我的输出是把每个数字存在数组中在输出的,我验证的例子都对了,例子的数据很大也没问题。但pta显示我答案错误(一脸懵逼)而队友的每求一位就输出一位的方法却可以(百思不得其解)。

浙公网安备 33010602011771号