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