贪心算法(排序)

码蹄集OJ-活动安排

复制代码
#include<bits/stdc++.h> 
using namespace std;
struct MOOE
{
    int s,e;
};
bool compare(const MOOE&a,const MOOE&b)
{
    return a.e<b.e;
}
int main( )
{
    int n;
    cin>>n;
    vector<MOOE>a(n);
    for(int i=0;i<n;i++)
    {
        cin>>a[i].s>>a[i].e;
    }
    sort(a.begin(),a.end(),compare);
    int t=0;
    int result=0;
    for(const MOOE&v:a)
    {
        if(v.s>=t)
        {
            result++;
            t=v.e;
        }
    }
    cout<<result<<endl;
    return 0;
}

要想安排最多的活动,就要让结束时间越早越好而且还能接上后面的活动。

定义结构体变量存储两个成员,一个是开始时间,一个是结束时间。定义一个结构体类型的数组,让这个数组按结束时间由小到大的顺序排序,遍历整个数组,如果遍历到的数组值大于上一次遍历数组的结束时间,结果加1。