//16.1-1 活动选择问题的动态规划算法
#include <stdio.h>
#include <stdlib.h>
#define N 11
void dynamic_activity_selector(int *s,int *f,int c[N+1][N+1],int ret[N+1][N+1]);
void trace_route(int ret[N+1][N+1],int i,int j);
void dynamic_activity_selector(int *s,int *f,int c[N+1][N+1],int ret[N+1][N+1])
{
int i,j,k;
int temp;
//当i>=j时,子问题的解为空,即c[i][j]=0
for(j=1;j<=N;j++)
for(i=j;i<=N;++i)
c[i][j]=0;
for(j=2;j<=N;++j)
for(i=1;i<j;++i)
{
//寻找k,将问题分解为两个子问题,c[i][k],c[k][j]
for(k=i+1;k<j;++k)
{
if(s[k]>=f[i]&&f[k]<=s[j])//判断活动k是否满足兼容性
{
temp=c[i][k]+c[k][j]+1;
if(temp>c[i][j])
{
c[i][j]=temp;
ret[i][j]=k;
}
}
}
}
}
void trace_route(int ret[N+1][N+1],int i,int j)
{
i
算法导论 16.1-1活动选择问题的动态规划算法 答案
最新推荐文章于 2023-06-07 15:32:20 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)