活动选择问题—贪心算法

来源:互联网 发布:php 上传图片卡住 编辑:程序博客网 时间:2024/05/21 08:58

java实现:

package 贪心算法;import java.util.ArrayList;public class 活动选择问题 {private static ArrayList<Integer> list = new ArrayList<>();private static ArrayList<Integer> list1 = new ArrayList<>();public static void main(String[] args) {// 假定输入的活动序列的完成时间已排序,且为了方便算法的初始化,//我们添加了一个虚拟活动a0;其余活动为真实活动。int s[] = {0,1,3,0,5,3,5,6,8,8,2,12};int f[] = {0,4,5,6,7,9,9,10,11,12,14,16};Recursive_Activity_selector(s, f, 0, s.length-1);System.out.println(list);Greedy_Activity_selector(s, f);System.out.println(list1);}//尾递归方法public static void Recursive_Activity_selector(int s[], int f[], int k, int n) {int m = k + 1;while(m <= n && s[m] < f[k]) {m += 1;}if (m <= n) {list.add(m);Recursive_Activity_selector(s, f, m, n);}else {return ;}}//迭代方法public static void Greedy_Activity_selector(int s[], int f[]) {int n = s.length-1;list1.add(1);int k = 1;for(int m = 2; m <= n; m++) {if(s[m] >= f[k]) {list1.add(m);k = m;}}}}