活动选择问题——动态规划解法(自底向上)
来源:互联网 发布:淘宝的芦荟胶是真的吗 编辑:程序博客网 时间:2024/06/14 22:03
java实现:
public class 活动选择问题 {public static void main(String[] args) {// 活动A(0) 和 A(N+1) 为辅助作用,不是真实的活动int s[] = {0,1,3,0,5,3,5,6,8,8,2,12,100};int f[] = {0,4,5,6,7,9,9,10,11,12,14,16,101};bottom_to_up(s, f, s.length-2);}public static void print_Activity(int start, int end, int cut_point[][]) {if(cut_point[start][end] > 0) {int k = cut_point[start][end];print_Activity(start, k, cut_point);System.out.print(k+" ");print_Activity(k, end, cut_point);}}public static void bottom_to_up(int s[], int f[], int n) {//定义c[i][j]为在活动A(i)结束之后,A(j)开始之前进行的活动集合的最优解的大小int c[][] = new int[n+2][n+2];//定义cut_point[i][j]为在活动A(i)结束之后,A(j)开始之前进行的活动集合的最优解//所包含的一个活动int cut_point[][] = new int[n+2][n+2]; for(int i = 0; i <= n; i++) {c[i][i] = 0;c[i][i+1] = 0;}for(int l = 2 ; l <= n+1; l++) {for(int i = 0; i <= n-l+1 ; i++) {int j = i + l ;c[i][j] = 0;if(f[i]<s[j]) {for(int k = i + 1; k < j; k++) {//判断活动A(k)是否在A(i)结束之后开始,在A(j)之前结束if(s[k]<f[i] || f[k] > s[j]) {continue;}int q = c[i][k] + c[k][j] + 1;if(q > c[i][j]) {c[i][j] = q;cut_point[i][j] = k;}}}}}System.out.println(c[0][n+1]);print_Activity(0, n+1, cut_point);}}
阅读全文
0 0
- 活动选择问题——动态规划解法(自底向上)
- 算法导论 动态规划 钢条切割问题的自底向上解法
- 动态规划(自底向上)
- 3.1.2矩阵连乘问题之动态规划法(自底向上)
- 活动选择问题(动态规划算法和贪心算法)
- 活动选择问题(动态规划和贪心算法)
- 活动选择问题(贪心算法vs动态规划)
- 活动选择问题(1)-动态规划分析
- 活动选择问题的动态规划解
- 活动选择问题-动态规划/贪心算法
- 动态规划——贪心算法——活动选择问题
- 动态规划——贪心算法——活动选择问题 收藏
- Triangle自底向上解法
- 动态规划之钢条切割问题自底向上发的实现(算法导论第15章)
- 用动态规划的自底向上方法解决钢材分割的问题。
- LeetCode 70. Climbing Stairs 自顶向下记忆化搜索,自底向上重叠子问题动态规划
- 【算法导论】用动态规划解活动选择问题
- 算法导论 16-1.1活动选择问题 动态规划解
- Moore's voting algorithm
- idea 代码不提示错误
- android 组件显示隐藏
- 2018京东校招笔试题-数据分析岗
- 高阶自定义View --- 粒子变幻、隧道散列、组合文字
- 活动选择问题——动态规划解法(自底向上)
- 语音信号处理之(四)梅尔频率倒谱系数(MFCC)
- 排序-6-归并排序
- MySQL中时间函数NOW()和SYSDATE()的区别
- 第1章 基本概念 —— 1.2 数据结构
- 在Ubuntu的环境下,使用Spyder+TensorFlow搭建深度学习环境
- C#进阶 06 算数运算符及表达式
- JSP 内置动作 标签
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore