0

0

C++程序,用于计算参与者在电影节上能完整观看多少部电影

WBOY

WBOY

发布时间:2023-09-09 12:33:04

|

1196人浏览过

|

来源于tutorialspoint

转载

c++程序,用于计算参与者在电影节上能完整观看多少部电影

假设有一个电影节,展示来自不同国家的各种电影。现在,一个参与者想要参加尽可能多的不重叠的电影,我们需要帮助他们找出他们可以参加多少部电影。

有一个结构体 Movie,它有以下成员:

  • 电影的开始时间。
  • 电影的持续时间。
  • 电影的结束时间。

还有一个结构体 Festival,它有以下成员:

  • 电影节的电影数量。
  • 一个类型为 Movie 的数组,其大小与电影节的电影数量相同。

我们需要创建并初始化一个 Festival 对象,其中包含两个数组 'timeBegin' 和 'duration',它们分别包含多部电影的开始时间和持续时间。整数 n 表示电影的总数,也用于初始化对象。我们进一步使用该对象来计算参与者可以完整观看多少部电影。

立即学习C++免费学习笔记(深入)”;

Text-To-Song
Text-To-Song

免费的实时语音转换器和调制器

下载

因此,如果输入是 timeBegin = {1, 3, 0, 5, 5, 8, 8},duration = {3, 2, 2, 4, 3, 2, 3},n = 7,那么输出将是 4

参与者可以在该电影节上完整观看 4 部电影。

为了解决这个问题,我们将按照以下步骤进行:

  • 结构体 Movie {
    • 定义三个成员变量 timeBegin、duration、timeEnd
    • 重载运算符 '
    • 返回 timeEnd
  • 结构体 Festival {
    • 定义一个成员变量 count
    • 定义一个包含 Movie 类型项的数组 movies
  • 定义一个函数 initialize(),它将接受数组 timeBegin 和 timeEnd 以及一个整数 n。
    • filmFestival := 一个新的 Festival 对象
    • filmFestival 的 count := count
    • 对于初始化 i := 0,当 i
    • temp := 一个新的 Movie 类型对象
    • temp 的 timeBegin := timeBegin[i]
    • temp 的 duration := duration[i]
    • temp 的 timeEnd := timeBegin[i] + duration[i]
    • 将 temp 插入到 filmFestival 的 movies 数组中
  • 返回 filmFestival
  • 定义一个函数 solve(),它将接受一个类型为 Festival 的变量 fest,
    • res := 0
    • 对 fest 的 movies 数组进行排序
    • timeEnd := -1
    • 对于初始化 i := 0,当 i count 时,更新 (将 i 增加 1),执行以下操作:
      • 如果 fest 的 movies[i] 的 timeBegin >= timeEnd,则执行以下操作:
        • (将 res 增加 1)
        • timeEnd := fest 的 movies[i] 的 timeEnd
    • 返回 res
  • 示例

    让我们看一下以下实现以更好地理解:

    #include
    
    using namespace std;
    
    struct Movie {
       int timeBegin, duration, timeEnd;
       bool operator<(const Movie& another) const {
          return timeEnd < another.timeEnd;
       }
    };
    
    struct Festival {
       int count;
       vector movies;
    };
    Festival* initialize(int timeBegin[], int duration[], int count) {
       Festival* filmFestival = new Festival;
       filmFestival->count = count;
       for (int i = 0; i < count; i++) {
          Movie temp;
          temp.timeBegin = timeBegin[i];
          temp.duration = duration[i];
          temp.timeEnd = timeBegin[i] + duration[i];
          filmFestival->movies.push_back(temp);
       }
       return filmFestival;
    }
    int solve(Festival* fest) {
       int res = 0;
       sort(fest->movies.begin(), fest->movies.end());
       int timeEnd = -1;
       for (int i = 0; i < fest->count; i++) {
          if (fest->movies[i].timeBegin >= timeEnd) {
             res++;
                timeEnd = fest->movies[i].timeEnd;
          }
       }
       return res;
    }
    
    int main(int argc, char *argv[]) {
    int timeBegin[] = {1, 3, 0, 5, 5, 8, 8};
    int duration[] = {3, 2, 2, 4, 3, 2, 3};
    Festival * fest;
    fest = initialize(timeBegin,duration, 7);
    cout << solve(fest) << endl;
    return 0;
    }

    输入

    int timeBegin[] = {1, 3, 0, 5, 5, 8, 8};
    int duration[] = {3, 2, 2, 4, 3, 2, 3};
    Festival * fest;
    fest = initialize(timeBegin,duration, 7);

    输出

    4

    相关专题

    更多
    java基础知识汇总
    java基础知识汇总

    java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

    1465

    2023.10.24

    Go语言中的运算符有哪些
    Go语言中的运算符有哪些

    Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

    228

    2024.02.23

    php三元运算符用法
    php三元运算符用法

    本专题整合了php三元运算符相关教程,阅读专题下面的文章了解更多详细内容。

    85

    2025.10.17

    golang结构体相关大全
    golang结构体相关大全

    本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

    196

    2025.06.09

    golang结构体方法
    golang结构体方法

    本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

    189

    2025.07.04

    高德地图升级方法汇总
    高德地图升级方法汇总

    本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

    9

    2026.01.16

    全民K歌得高分教程大全
    全民K歌得高分教程大全

    本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

    21

    2026.01.16

    C++ 单元测试与代码质量保障
    C++ 单元测试与代码质量保障

    本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

    13

    2026.01.16

    java数据库连接教程大全
    java数据库连接教程大全

    本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

    33

    2026.01.15

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    C 语言教程
    C 语言教程

    共48课时 | 38.3万人学习

    Python进阶视频教程
    Python进阶视频教程

    共30课时 | 7.9万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号