解题思路:将每个活动根据结束时间进行升序排列,若结束时间相等,则按开始时间升序排列。后面进行两次嵌套循环,将每个的结束时间与其排在它后面的活动的开始时间进行比较,首先max初始化为1,若活动开始时间大于活动的结束时间,则result进行加1操作,最后选取,在每次的外层循环中,输出max最大的值。
源码附上:
#include <iostream>
#include <algorithm>
using namespace std;
class Match
{
public: long long s,e;
} ;
bool cmp(Match m1,Match m2)
{
if(m1.e==m2.e)
{
return m1.s<m2.s;
}
return m1.e<m2.e;
}
int main()
{
int n,i,j;
Match m[10005];
cin>>n;
for(i=0;i<n;i++)
{
cin>>m[i].s>>m[i].e;
}
int sum=0;
sort(m,m+n,cmp);
for(i=0;i<n;i++)
{
int max=1;
for(j=i+1;j<n;j++)
{
if(m[i].e>m[j].s)
{
max++;
}
}
sum=(sum>max?sum:max);
}
cout<<sum<<endl;
return 0;
}