• 看电视(贪心算法)


    问题 A: 看电视

    时间限制: 1 Sec  内存限制: 32 MB
    提交: 927  解决: 432
    [提交][状态][讨论版][命题人:外部导入]

    题目描述

    暑假到了,小明终于可以开心的看电视了。但是小明喜欢的节目太多了,他希望尽量多的看到完整的节目。
    现在他把他喜欢的电视节目的转播时间表给你,你能帮他合理安排吗?

    输入

    输入包含多组测试数据。每组输入的第一行是一个整数n(n<=100),表示小明喜欢的节目的总数。
    接下来n行,每行输入两个整数si和ei(1<=i<=n),表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。
    当n=0时,输入结束。

    输出

    对于每组输入,输出能完整看到的电视节目的个数。

    样例输入

    12
    1 3
    3 4
    0 7
    3 8
    15 19
    15 20
    10 15
    8 18
    6 12
    5 10
    4 14
    2 9
    0

    样例输出

    5
    code:
    

    /*算法:使用贪心算法,时间按照开始时间从小到大的顺序排列,
    *如果开始时间相同,那么按照结束时间从小到大的顺序排列。之
    *后使用lastTV保留上一个最优解,如果下一个区间的开始时间大
    *于lastTV的结束时间,那么更新lastTV,直至所有区间被遍历完
    */
    #include
    #include

     
    

    /*节目结构*/
    struct program {
    int si, ei;
    };
    program TV[1000];

     
    

    bool cmp(program a, program b) {
    if (a.ei != b.ei)
    {
    return a.ei < b.ei; //返回开始时间小的
    }
    else
    {
    return a.si < b.si; //返回结束时间小的
    }
    }
    int main()
    {
    using namespace std;

     
    

    int n;

     
    

    while (cin >> n)
    {
    if (!n)
    {
    break;
    }

     
    

    for (int i = 0; i < n; i++)
    {
    cin >> TV[i].si >> TV[i].ei;
    }

     
    

    /*根据开始时间从小到大排序,如果相等,那么结束时间小的在前*/
    sort(TV, TV + n, cmp);

     
    

    /*for (int i = 0; i < n; i++)
    {
    cout << TV[i].si <<" "<< TV[i].ei< }*/

     
    

    int lastTV = TV[0].ei, count = 1;
    //cout << lastTV< for (int i = 1; i < n; i++)
    {
    if (TV[i].si >= lastTV)
    {
    count++;
    lastTV = TV[i].ei;
    }
    }
    cout << count << endl;

     
    

    }

     
    

    // system("pause");
    return 0;
    }

  • 相关阅读:
    揭秘OLED透明拼接屏的参数规格:分辨率、亮度与透明度全解析
    基于Java毕业设计预约挂号系统演示录像2021源码+系统+mysql+lw文档+部署软件
    【广州华锐互动】煤矿提升机作业VR互动实训平台
    家政服务平台如何盈利
    e人e本优盘使用
    Springboot:拦截器和过滤器
    目录遍历漏洞
    Part3_理解MATSIM_第48章 MATSim作为蒙特卡洛引擎
    RabbitMQ的架构模型
    在Vs-code/WebStorm中构建Vue项目
  • 原文地址:https://blog.csdn.net/weixin_71792169/article/details/127923108