算法第四章作业
一、所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。贪心算法寻找局部最优解,企图以这种方式获得全局最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择。也就是说,不从整体最优上加以考虑,做出的只是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。贪心算法易于实现、运行速度快,是不错的近似算法。
二、举例——会场安排问题
问题描述:假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的 贪心算法进行安排。
输入格式:
第一行有 1 个正整数k,表示有 k个待安排的活动。 接下来的 k行中,每行有 2个正整数,分别表示 k个待安排的活动开始时间和结束时间。时间 以 0 点开始的分钟计。
输出格式:输出最少会场数。
算法设计:对于给定的k个待安排的活动,计算使用最少会场的时间表。
贪心算法代码:
void greedy(int n,int start[],int end[]) { int j=0; int count=0; for(int i=0;i<n;i++) { if(start[i]<end[j]){ count++; }else{ j++; } } cout<<count; }
三、遇到的问题:对于利用贪心算法后产生的一些特殊情况不能完整地考虑到。对于贪心算法的具体策略需要很多思考。
结对编程情况:我的结对编程伙伴是陈億谋。这一次我们的结对编程进展的比以往顺利,我们合作讨论一起确定了贪心选择方案,然后他负责敲代码,我负责监督指导。最后都较好的理解了贪心算法。

浙公网安备 33010602011771号