2016HUAS_ACM暑假集训2J - 今年暑假不AC

简单的贪心题。把节目的结束时间按升序排列,从第一个节目开始,寻找可以完全看完的节目。

这里用了结构体,所以要自己写排序方式。

总之,贪心的第一要义就是——排序

本人新手,请体谅。

#include
#include
using namespace std;
struct time//一个节目的开始和结束
{
    int s,e;
};
bool com(struct time a,struct time b)//排序方式
{
    return a.e<b.e;
}
int main()
{
    int n,i,t,c;
    time show[101];
    while((cin>>n),n)
    {
        c=1;
        for(i=0;i)
            cin>>show[i].s>>show[i].e;
        sort(show,show+n,com);
        t=show[0].e;//临时变量
        for(i=1;i//从第二个节目开始比较
        {
            if(show[i].s>=t)//后一个节目开始晚于前一个节目结束
            {
                c++;//可以看完
                t=show[i].e;//把临时变量改为当前节目的结束,来进行下一次的比较
            }
        }
        cout<endl;
    }
    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/ankelen/p/5683506.html

你可能感兴趣的:(2016HUAS_ACM暑假集训2J - 今年暑假不AC)