算法第四章作业

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显示我答案错误(一脸懵逼)而队友的每求一位就输出一位的方法却可以(百思不得其解)。

posted @ 2019-11-25 13:06  扶墙而出徐凤年  阅读(199)  评论(0编辑  收藏  举报