本文主要是介绍题目 2335: 活动安排,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si<fi。如果选择了活动i,则它在半开时间区间[si,fi)内占用资源。若区间[si,fi)与区间[sj,fj)不相交,则称活动i与活动j是相容的。也就是说,当si≥fj或sj≥fi时,活动i与活动j相容。选择出由相互兼容的活动组成的最大集合。
代码:
package lanqiao;import java.math.BigInteger;
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[][] sf = new int[n][2];for(int i = 0;i < sf.length;i ++){sf[i][0] = sc.nextInt();sf[i][1] = sc.nextInt();}Arrays.sort(sf, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {if(o1[1] < o2[1]){return -1;}else{return 1;}}});
// for(int i = 0;i < n;i ++)
// {
// System.out.println(sf[i][0] + " " + sf[i][1]);
// }int f = 0,cont = 0;for(int i = 0;i < sf.length;i ++){if(sf[i][0] >= f){f = sf[i][1];cont ++;}}System.out.println(cont);}
}
这篇关于题目 2335: 活动安排的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!