hdu2037
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2037
这道题给我的启示是排序的问题,刚开始自己做的时候我对开始时间进行排序,造成了必须两重循环才能结束,采用如下排序,一重循环即可。
#include <iostream>
#include <algorithm>
using namespace std;
struct view
{
int start;
int end;
};
int cmp(view a,view b)
{
if(a.end==b.end) return a.start<b.start;
else return a.end<b.end;
}
view a[105];
int main()
{
int n,i;
while(true)
{
cin>>n;
if(n==0) break;
for(i=0;i<n;i++)
cin>>a[i].start>>a[i].end;
sort(a,a+n,cmp);
int count;
int max=0;
int old=0;
count=1;
for(i=1;i<n;i++)
{
if(a[i].start>=a[old].end)
{
count++;
old=i;
}
}
cout<<count<<endl;
}
return 0;
}
浙公网安备 33010602011771号