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; }