J~今年暑假不AC

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
 typedef struct st
{
int begin;
int end;
}st;
bool cmp(st a,st b)
{
    if(a.begin<b.begin) return true ;
else return false;
}
int main()
{
    int n,cnt;
  st a[100];
  while(~scanf("%d",&n))
  {if(n==0)  return 0;
      for(int i=0;i<n;i++)
    scanf("%d%d",&a[i].begin,&a[i].end);
        cnt=1;
        sort(a,a+n,cmp);
        for(int i=1;i<n;i++)
        {
            if(a[i].begin<a[i-1].end)
            {
                if(a[i].end>a[i-1].end)
                    a[i].end=a[i-1].end;
            }
            else cnt++;
        }
        cout<<cnt<<endl;
  }
  return 0;
}



知识点:贪心法
分析:就是首先按照开始时间排序,然后将后一个时间的开始时间与结束时间与前一个的结束时间作比较。主要还是要看懂题目,之前没读懂,想了好久才搞定。


原文地址:https://www.cnblogs.com/lbyj/p/5682650.html