活动选择问题
Time Limit: 1000MS Memory limit: 65536K
题目描述
sdut 大学生艺术中心每天都有n个活动申请举办,但是为了举办更多的活动,必须要放弃一些活动,求出每天最多能举办多少活动。
输入
输入包括多组输入,每组输入第一行为申请的活动数n,从第2行到n+1行,每行两个数,是每个活动的开始时间b,结束时间e;
输出
输出每天最多能举办的活动数。
示例输入
12 15 20 15 19 8 18 10 15 4 14 6 12 5 10 2 9 3 8 0 7 3 4 1 3
示例输出
5
这个题就是先将结尾时间存到一个数组里面,然后再将其排序,然后只要使begin[i+1]>end[i]即可。。这是重点
#include<stdio.h> int main() { int n,i,j,begin[101],end[101]; int t,g; while(scanf("%d",&n)!=EOF) { for(i=0; i<n; i++) { scanf("%d%d",&begin[i],&end[i]); } for(i=0; i<n-1; i++) { for(j=0; j<n-i-1; j++) { if(end[j]>=end[j+1]) { t=end[j]; end[j]=end[j+1]; end[j+1]=t; g=begin[j]; begin[j]=begin[j+1]; begin[j+1]=g; } } } int s=0,h=end[0]; for(i=0; i<=n; i++) { if(begin[i]>=h) { h=end[i]; s++; } } printf("%d\n",s+1); } return 0; }