这是一道活动排序题,属于贪心算法。
import java.util.Scanner;
public class Hd2037 {
public static void main(String[] args){
Scanner sc=new Scanner (System.in);
while(sc.hasNext()){
int n=sc.nextInt();
if(n==0) break;
int []a=new int[n];
int []b=new int[n];
for(int i=0;i<n;i++){
a[i]=sc.nextInt(); //记录开始时间
b[i]=sc.nextInt(); //记录结束时间
}
//按结束时间降序排序
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(b[i]>b[j]){
int temp=b[j];
b[j]=b[i];
b[i]=temp;
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
int k=0;
int count=0; //记录能看上的活动个数
for(int i=1;i<n;i++){
if(a[i]>=b[k]){ //下一个活动的开始时间>上一个活动的结束时间
k=i;
count++;
}
}
System.out.println((count+1));
}
}
}