0

0

如何使用C++中的活动选择算法

WBOY

WBOY

发布时间:2023-09-21 12:01:05

|

1322人浏览过

|

来源于php中文网

原创

如何使用c++中的活动选择算法

如何使用C++中的活动选择算法

活动选择算法(Activity Selection Algorithm)是一种经典的贪心算法,用于解决活动安排问题。在给定一组活动的起始时间和结束时间的情况下,算法的目标是选择出最大的相容活动集合,即这些活动互不冲突且可以同时进行的最大数量的活动。本文将介绍如何使用C++实现活动选择算法,并附上具体的代码示例。

算法思路:

活动选择算法的基本思路是,首先根据活动的结束时间对活动进行排序。然后依次选择结束时间最早的活动,同时排除与该活动冲突的其他活动。具体的步骤如下:

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

  1. 首先,需要定义一个结构体来表示每个活动。结构体中包含活动的起始时间和结束时间。
struct Activity
{
    int start;
    int end;
};
  1. 然后,定义一个函数来实现活动选择算法。函数的输入是一个活动数组和数组的大小,输出是一个最大相容活动集合。
vector activitySelection(Activity arr[], int n)
{
    // 根据结束时间对活动进行排序
    sort(arr, arr + n, [](Activity a, Activity b) {
        return a.end < b.end;
    });

    vector selectedActivities;
    selectedActivities.push_back(arr[0]); //选择第一个活动

    int lastSelected = 0;
    //遍历剩余的活动
    for (int i = 1; i < n; i++)
    {
        if (arr[i].start >= arr[lastSelected].end)
        {
            selectedActivities.push_back(arr[i]);
            lastSelected = i;
        }
    }

    return selectedActivities;
}
  1. 最后,在main函数中构造一个活动数组并调用活动选择函数,打印输出最大相容活动集合。
int main()
{
    Activity arr[] = {{1, 2}, {3, 4}, {0, 6}, {5, 7}, {8, 9}, {5, 9}};
    int n = sizeof(arr) / sizeof(arr[0]);

    vector selectedActivities = activitySelection(arr, n);

    cout << "最大相容活动集合:" << endl;
    for (int i = 0; i < selectedActivities.size(); i++)
    {
        cout << "(" << selectedActivities[i].start << ", " << selectedActivities[i].end << ")" << endl;
    }

    return 0;
}

代码示例解析:

首先,在定义的结构体中,将每个活动的起始时间(start)和结束时间(end)作为结构体的成员。

然后,在实现的活动选择函数中,首先根据活动的结束时间对活动数组进行排序,以便后续选择活动时可以方便地按照结束时间的顺序。

动感购物系统 2005V-C
动感购物系统 2005V-C

无错试用版,保留了所以商城的基本功能,商品数量限制80件2005V-C更新:更新所有订单功能及一些相应的错误,在线支付加上邮费功能支持在线支付八家银行等接口和可以选择商品图文排列功能,可以后台自由设置,银行接口列表如下:动感在线支付支付宝 网银在线 NPS支付 西部支付 1st-pay在线支付平台 首信易支付 易付通 中国在线支付 环讯IPS支付 不使用在线支付默认管理员帐号:admin密码:ad

下载

接着,定义一个vector容器 selectedActivities 来保存最大相容活动集合,并将第一个活动加入其中。

然后,从第二个活动开始遍历剩余的活动。如果当前活动的起始时间大于等于已选择的最后一个活动的结束时间,则将该活动加入到最大相容活动集合中,并将该活动设为当前已选择的最后一个活动。

最后,在main函数中创建一个活动数组,调用活动选择函数,并打印输出最大相容活动集合。

总结:

通过以上的示例代码,我们可以看到C++中如何实现活动选择算法。通过贪心策略,根据活动的结束时间来选择最大的相容活动集合。活动选择算法在实际生活中有广泛的应用,比如会议安排、项目管理等。

【参考文献】

[1] Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms (3rd edition). MIT Press.

相关文章

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

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

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

195

2025.06.09

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

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

187

2025.07.04

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

400

2023.08.14

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

18

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

34

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

热门下载

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

精品课程

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

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