(p241)活动选择
来源:互联网 发布:网王之数据下的温柔 编辑:程序博客网 时间:2024/06/05 15:19
#include<stdio.h>#include<limits.h>#define max 1000int GreedyActivitySelector(int s[],int f[],int ans[],int n)//贪心{int k=0,i,count=0;for (i=1;i<=n;i++)if (s[i]>=f[k]){ans[count++]=i;k=i;}return count;}int ActivitySelector(int s[],int f[],int ans[],int k,int n,int *count)//递归{int i=k+1;while ((i<=n)&&(s[i]<f[k]))i++;if (i<=n){ans[(*count)++]=i;ActivitySelector(s,f,ans,i,n,count);}return 0;}int ActivitySelector2(int s[],int f[],int n)//动态规划{int i,j,k,l;int c[max+2][max+2];for (i=0;i<=n+1;i++)for (j=0;j<=n+1;j++)c[i][j]=0;for (l=0;l<=n+1;l++)for (i=0;i<=n+1-l;i++){j=i+l;for (k=i+1;k<=j-1;k++)//注意k=0和n+1的情况if ((s[k]>=f[i])&&(f[k]<=s[j])&&(c[i][k]+c[k][j]+1>c[i][j]))c[i][j]=c[i][k]+c[k][j]+1;}for (j=0;j<=n+1;j++)printf("%3d ",j);printf("\n");for (i=0;i<=n+1;i++){for (j=0;j<i;j++)printf(" ");for (j=i;j<=n+1;j++)printf("%3d ",c[i][j]);printf("%3d\n",i);printf("\n");}return c[0][n+1];}int main(void){int f[max+2]={0,4,5,6,7,9,9,10,11,12,14,16};int s[max+2]={0,1,3,0,5,3,5,6,8,8,2,12};int ans[max];int count;int n=11;count=GreedyActivitySelector(s,f,ans,n);printf("%d\n",count);int i;for (i=0;i<count;i++)printf("%d ",ans[i]);count=0;ActivitySelector(s,f,ans,0,n,&count);printf("\n%d\n",count);for (i=0;i<count;i++)printf("%d ",ans[i]);printf("\n");s[n+1]=INT_MAX;//为了便于处理,设置一个最后开始的活动f[n+1]=INT_MAX;count=ActivitySelector2(s,f,n);printf("\n%3d\n",count);return 0;}
0 0
- (p241)活动选择
- 活动选择(贪心)
- 滑动窗口_单调队列入门 (白书P241)
- 活动选择问题(贪心)
- 活动选择问题(贪心)
- 活动选择
- 活动选择
- 活动选择
- 活动选择
- 活动选择
- 活动选择
- 活动选择
- 活动选择
- 活动选择
- 活动选择
- 活动选择
- 活动选择
- 活动选择
- Java中的Socket通信
- javaEE SSH框架 BaseAction的抽取以及其他方面代码优化
- JVM-内存分配与回收策略
- 机器学习:核函数的一个小题目
- NVIDIA Jetson TK1 rosrun rviz segmentation fault的解决方法
- (p241)活动选择
- Android系统服务
- java语言程序设计第十版(Introduce to java 10th) 课后习题 chapter7-33
- Android-Intent两种启动方式
- 熵权法简介
- 排序——堆排序(C++)
- 点击两次,才退出应用的程序代码
- MyEclipse快捷键大全
- 栈的链式存储结构及其基本运算的实现