|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
《算法导论(第三版)》第十六章,贪心算法; ]" m7 M6 R% N1 w1 ], M
16.1 活动选择问题
* Y8 |" A/ @ s. ~4 g' @PS:为了代码方便,在相同思想下,将原始题目序列的首位加上0
1 k4 g9 B$ }2 z9 Q! J! }+ @- %该段代码的必备条件:序列以活动结束时间递增顺序排列
- %《算法导论》 第十六章 贪心算法 16.1活动选择问题
- clear;clc
- s=[0 1 3 0 5 3 5 6 8 8 2 12];%活动开始时间
- f=[0 4 5 6 7 9 9 10 11 12 14 16];%活动结束时间
- a=RECURSIVE_ACTIVITY_SELECTOR(s,f,1,length(s))%活动选择
9 @# r6 \ E5 Y B9 \2 Q; V7 `2 U 4 D& i' f I% M* D: S: v0 @
. Q' m- e* |2 H2 ~) x- O* ?
2 M# O# b# U! Z( ]- W E) O' R' ]: c
8 A* r; Y+ P) R, o0 S8 ]# K! h递归活动选择器4 Q1 d$ W; \' k( F/ c2 ^
- function [a] = RECURSIVE_ACTIVITY_SELECTOR(s,f,k,n)
- %递归活动选择器
- %a 返回的序列结果
- m=k+1;
- while m<=n & s(m)<f(k)%检查是否兼容
- m=m+1;%若不兼容,进行下一位判断
- end
- if m<=n%整个序列
- a=[m RECURSIVE_ACTIVITY_SELECTOR(s,f,m,n)];%[当前最优值+在该条件下的后续最优值]
- else
- a=[];%所有搜索完毕,返回空值
- end
- end
X1 O0 d2 t% R; T2 {- P; ] * i4 C0 k3 _9 E$ ?
7 z1 r$ \4 }8 D7 d+ M% L0 ~6 e0 ^3 `
|
|