算法第四章作业

1. 贪心算法总是做出在当前看来是最好的选择,并不是从整体最优上考虑,所做的选择只是在某种意义上的局部最优选择。所以贪心算法适用的前提是局部最优解能够导致全局最优解。

 

2.贪心算法——会场安排问题

 

 问题分析:要使会场安排的数量最少,就要在使用了的会场上尽量安排更多的活动,可以考虑的贪心算法策略有最早开始、最晚开始、最早结束、最短时间,此问题要采取最早开始的策略。

#代码详情:

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int s[100];
int f[100];
int n;

void GreedySelector(int *s,int *f){
	int count=0;
	sort(s,s+n);
	sort(f,f+n);
	int j=0;
	for(int i=0;i<n;i++){
		if(s[i]<f[j]){
			count++;
		} 
		else{
			j++;
		}
	}
	cout<<count<<endl;
}

int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>s[i]>>f[i];
	}
	GreedySelector(s,f);
	return 0;
}

  

 

3. 所遇到的问题与结对编程情况

贪心算法问题相对与动态规划问题较简单,在编程过程中遇到的问题较少。在与莞怡结对编程的过程中,在讨论之前,我们会先独立思考,遇到有疑问的地方才讨论,想出最好的算法,上周实验课的三道题目,第一道比较简单,但是我在数组上出了一点问题,数组的大小没有把握好,不过很快就理解了问题及解决方法。第二道题由于我们两个理解错了题意,在课堂上没有解决此问题。

 

posted @ 2020-11-14 20:42  ZhangQiii  阅读(67)  评论(0编辑  收藏  举报