上一篇讲了贪心算法来解活动选择问题(【算法导论】贪心算法之活动选择问题),发现后面有一道练习16.1-1是要用动态规划来解活动选择问题。其实跟之前的矩阵链乘法有些相似,也是考虑分割的活动是哪一个,并用二维数据来记录Sij---最大兼容集合个数,和用另一个二维数据来记录Sij取得最大时的活动分割点k。然后就是考虑边界问题,和使用递归来求动态规划的最优解。
#i...
分类:
编程语言 时间:
2015-01-28 22:36:17
阅读次数:
408
活动选择问题的递归调用算法
#include
using namespace std;
#define N 11
struct node{
int id;
int satrt;
int end;
}A[N+1];
void recursive_activity_seclect(int k,int n)
{
int m=k+1;
while(m<=n&&A[m].satrt<A[k].e...
分类:
编程语言 时间:
2014-12-29 12:16:04
阅读次数:
171
此题是算法导论贪心算法的16.1-5题。
问题描述:
考虑一个活动选择问题的一个变形:每个活动ai除了开始和结束时间外,还有一个值vi。目标不再是求规模最大的兼容活动子集,而是求值之和最大的兼容活动子集。也就是说,选择一个兼容活动子集A,是的vk(k属于A)之和最大化。设计一个多项式时间的算法求解此问题。
思路:
此题是活动安排问题的一个变形。最优化目标不再是最大兼容活动子集,所以...
分类:
其他好文 时间:
2014-11-06 17:36:27
阅读次数:
158
这三种算法总的来说,刚开始看的时候不知道怎么下手,但是看多了也会有那么一点儿感觉。分治法是这三种算法里面都有的思想,动态规划和贪心都是将问题分解成子问题求解,但动态规划里面的子问题都带有联系,而贪心算法里面的子问题都相对独立,唯一不同的是,贪心算法要首先想出一个解决方案来构造求解最优解的过程。...
分类:
其他好文 时间:
2014-10-23 20:49:49
阅读次数:
241
问题描述:
有一个需要使用每个资源的n个活动组成的集合S={a1,a2,···,an},资源每次只能由一个活动使用。每个活动a都有一个开始时间和结束时间,且0 File
Name: Activity_selector.c > Author: He Xingjie > Mail: gxm...
分类:
其他好文 时间:
2014-06-08 00:31:13
阅读次数:
319