描述
-
输入
-
第一行是一个整型数m(m<100)表示共有m组测试数据。
每组测试数据的第一行是一个整数n(1<n<10000)表示该测试数据共有n个活动。
随后的n行,每行有两个正整数Bi,Ei(0<=Bi,Ei<10000),分别表示第i个活动的起始与结束时间(Bi<=Ei)
输出
-
对于每一组输入,输出最多能够安排的活动数量。
每组的输出占一行
// 1. 如何利用 qsort 对二维数组排序
// 2. 剩下的时间段越长,越可能会有更多的会场安排
样例输入
-
2 2 1 10 10 11 3 1 10 10 11 11 20
样例输出
-
1 2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 10001
int cmp(const void *a,const void *b);
int main()
{
int m = 0;
scanf("%d",&m);
while (m--)
{
int i = 0;
int n = 0;
int tmp = -1;
int result = 0;
int time[MAX_LEN][2];
scanf("%d",&n);
memset(time,0,sizeof(time));
for (i = 0; i < n; i++)
{
scanf("%d%d",&time[i][0],&time[i][1]);
}
qsort(time,n,sizeof(time[0]),cmp);
for (i = 0; i < n; i++)
{
if (tmp < time[i][0])
{
result++;
tmp = time[i][1];
}
}
printf("%d\n",result);
}
return 0;
}
int cmp(const void *a,const void *b)
{
if (*((int *)a+1) == *((int *)b+1))
return (*((int *)a) == *((int *)b));
else
return (*((int *)a+1) - *((int *)b+1));
}