思路
使用结构体存储时间和状态。比如结构体1存储2:00开始,结构体2存储4:00结束。结构体数组存储所有的任务开始结束时间。然后给数组排序。遍历数组,如果此时数组状态为开始,增加一个会场,反之减少一个会场。记录会场值的变化,求其最大值就行。
代码
#include<stdio.h>
struct anpai{
int t;
char m;
}an[100],b;
main()
{
int n,i,j,s=0,max=0;
scanf("%d",&n);//有多少个任务
for(i=0;i<n*2;i++)
{
scanf("%d",&an[i].t);
if(i%2)
an[i].m='e';//开始
else
an[i].m='s';//结束
}
for(i=0;i<n*2;i++)
{
for(j=i+1;j<n*2;j++)
{
if(an[i].t>an[j].t)
{
b=an[i];
an[i]=an[j];
an[j]=b;
}
}
}
for(i=0;i<n*2;i++)
{
if(max<s)
max=s;
if(an[i].m=='s')
s++;
else
s--;
}
printf("%d",max);
}