import org.junit.Test; /** * @auther qwh * @create 2022-11-21-21:39 */ public class test1 { public void select(int start[],int fina[],boolean tf[]) { int n=start.length-1; tf[1]=true;//安排第一个活动标记为true int j=1;//用于比较的序号 int count=1;//用于统计加入的活动数 for(int i=2;i<=n;i++)//对第二件以后的事情进行比较 { //i表示后一件事情 j表示前一件事情 if(start[i]>=fina[j])//如果后一件事情的开始时间大于前一件事情的结束时间这加入这件事情 { tf[i]=true;//将后面的事件安排归为true j=i;//后一件事情将成为下一次比较的前一件事情 count++;//统计事件总数加以 } else { tf[i]=false; } } System.out.println("最大事件数为"+count); } @Test public void test() { //1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11 int start[]=new int[]{0,1, 3, 2, 5, 4, 5, 6, 8, 8, 2}; int fina []=new int[]{0,4, 5, 6, 7, 9, 9,10,11, 12,13}; boolean tf[]=new boolean[start.length]; select(start,fina,tf); System.out.println("选择的事件安排为"); for (int i=1;i<=start.length-1;i++) { if(tf[i]) { System.out.print(i+"\t"); } } } }
04-27
5307
05-26
2132
05-19
3676