| 
 | 
	
    
 
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册  
 
x
 
《算法导论(第三版)》第十六章,贪心算法 
0 T) h& l  y- i2 J4 N- b/ D16.1 活动选择问题, ]) m7 U, ~9 K; K/ p& P- j 
PS:为了代码方便,在相同思想下,将原始题目序列的首位加上0 
% \. E8 R5 z' T3 Z" U- %该段代码的必备条件:序列以活动结束时间递增顺序排列
 - %《算法导论》 第十六章 贪心算法 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))%活动选择0 a; W& u. j. {* e% e
 
  3 q% W5 z6 o* ?  B' j& N 
 
6 W( L# {1 W; i0 ]' q7 c( z" a" ~% v/ t! O 
" X+ Y! D  o- B2 c) J 
5 {& H# Y" G% s: ? 
递归活动选择器5 u1 r  B2 @9 ^+ _# x4 r" S 
- 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
 - end6 N  {+ s$ w. m  o" g* x
 
 
  
+ V. v. z7 Q7 y+ ?* U$ P6 v$ @ 
 
5 c& ^7 Y/ c2 T( k |   
 
 
 
 |