贪心算法c++

news2024/11/24 16:31:21

贪心算法C++概述

一、贪心算法的基本概念

贪心算法(Greedy Algorithm),又名贪婪法,是一种解决优化问题的常用算法。其基本思想是在问题的每个决策阶段,都选择当前看起来最优的选择,即贪心地做出局部最优的决策,以期获得全局最优解。简单来说,就像是一个贪婪的人,在每一步都只考虑眼前的最大利益,希望最终这些局部最优的选择能够堆叠出全局最优的结果。例如在找零钱问题中,如果有1元、5角、1角的硬币,要凑出8角钱,按照贪心算法,会优先选择面值大的硬币,先选5角,再选3个1角,这就是在每一步都做局部最优选择。在C++中实现贪心算法时,会充分利用C++语言高效的特性以及丰富的标准模板库(STL),其中包含了大量的数据结构和算法,方便程序员实现贪心算法 。

二、贪心算法的工作原理

  1. 贪心选择性质

    • 原问题的整体最优解可以通过一系列局部最优的选择得到。每一步的选择都是基于当前状态下的最优解,而且这种选择不依赖于未做出的选择,只依赖于已做出的选择。例如在活动安排问题中,假设有一系列活动,每个活动都有开始时间和结束时间。按照贪心算法,我们可以选择最早结束的活动作为第一个活动,然后在剩下的活动中继续选择最早结束的活动,这个选择过程就是每一步都做出局部最优选择,而且每个选择只与当前已经选择的活动有关,不考虑未来可能的其他活动组合。

  2. 最优子结构性质

    • 当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。这是贪心算法能够求解问题的关键。例如在构建最小生成树的Prim算法和Kruskal算法中,原问题是构建整个图的最小生成树,子问题是构建图的一部分的最小生成树,整个最小生成树的最优解是由各个子树(子问题的最优解)组合而成的。在C++实现中,我们需要准确地识别问题是否具有这两个性质,才能正确地运用贪心算法。如果不满足这两个性质,贪心算法可能无法得到正确的全局最优解。

三、贪心算法在C++中的应用场景

  1. 硬币找零问题

    • 在某些硬币组合下,贪心算法总是可以得到最优解。例如有1元、5角、1角的硬币组合,要凑出一定金额,我们可以每次选择尽可能大面值的硬币,直到凑出目标金额。在C++中实现这个过程,可以通过定义一个表示硬币面值的数组,然后按照从大到小的顺序遍历这个数组,计算需要的硬币数量。

  2. 活动安排问题

    • 假设有n个活动,每个活动都有开始时间和结束时间。要安排这些活动使得在一个场地中能够进行最多的活动。按照贪心算法,可以先按照活动结束时间对活动进行排序,然后选择第一个活动(最早结束的活动),接着在剩下的活动中选择开始时间大于等于上一个活动结束时间的最早结束的活动,依次类推。在C++中,可以使用结构体来表示活动的开始时间和结束时间,然后利用STL中的排序算法(如std::sort)对活动数组进行排序,再按照贪心策略选择活动。

  3. 最小生成树问题(Prim算法和Kruskal算法)

    • 在构建图的最小生成树时,Prim算法从一个顶点开始,每次选择与当前已连接顶点集合中距离最近(权值最小)的顶点加入集合,这个过程就是贪心选择。Kruskal算法则是先将所有边按照权值从小到大排序,然后每次选择一条不会形成环的最小权值边加入最小生成树,也是贪心策略的体现。在C++中,对于图的表示可以使用邻接矩阵或者邻接表,在实现这两个算法时,要充分利用C++的特性来高效地操作数据结构,例如使用STL中的优先队列(std::priority_queue)可以方便地在Prim算法中获取最小权值的边。

如何使用贪心算法

一、贪心算法C++基础介绍

贪心算法(greedy algorithm)是一种常见的解决优化问题的算法,其基本思想是在问题的每个决策阶段,都选择当前看起来最优的选择,即贪心地做出局部最优的决策,以期获得全局最优解。它就像是模拟一个“贪心”的人做出决策的过程,这个人在每一步行动时总是按某种指标选取最优的操作。

在C++中实现贪心算法时,需要确保算法满足贪心选择性质和最优子结构。贪心选择性质是指原问题的整体最优解可以通过一系列局部最优的选择得到,也就是每一步的选择在当下是最优的,并且不需要考虑整体的最优情况就能做出这个选择。最优子结构是指问题能够分解成子问题来解决,子问题的最优解能递推到最终问题的最优解。例如在硬币找零问题中,如果硬币的面值组合是特定的(如1元、5角、1角),就可以使用贪心算法。假设要找零8角钱,贪心算法会先选择5角,再选择3个1角,这个过程中每次选择都是当下能让剩余找零金额最小的选择,并且这个问题满足最优子结构,即整体的找零最优解可以由每一步的局部最优解组成。

贪心算法简洁且高效,在许多实际问题中有着广泛的应用,比如活动安排问题、最优装载问题、单源最短路问题(Dijkstra算法)等。它和动态规划算法有一定的相似性,但又有所不同。动态规划会考虑所有可能的子问题解并进行记录,以避免重复计算,而贪心算法则更侧重于每一步的局部最优解,并不一定记录所有子问题的解。

二、贪心算法C++实例分析

(一)活动安排问题

  1. 问题描述

    • 有一系列活动,每个活动都有开始时间和结束时间。需要在这些活动中选择出尽可能多的相互兼容的活动,使得在同一时间内最多只能进行一个活动。例如有活动A(1, 3),活动B(2, 5),活动C(4, 6),这里的数字分别表示活动的开始时间和结束时间。

  2. 算法设计

    • 问题分析:要选择最多的相互兼容的活动,直观上可以按照活动结束时间的先后顺序进行选择。每次选择结束时间最早的活动,这样就能给后面的活动留出更多的时间。

    • 建模:可以将活动看作一个结构体,结构体包含开始时间和结束时间两个成员变量。

    • 算法描述:首先对所有活动按照结束时间进行排序。然后选择第一个活动,接着遍历剩余的活动,只要活动的开始时间大于等于上一个已选活动的结束时间,就选择该活动。

  3. C++实现示例代码

#include <iostream> #include <vector> #include <algorithm> using namespace std; // 定义活动结构体 struct Activity { int start; int end; }; // 比较函数,用于按照活动结束时间排序 bool compare(Activity a, Activity b) { return a.end < b.end; } // 活动安排函数 int activitySelection(vector<Activity>& activities) { if (activities.empty()) return 0; // 按照结束时间排序 sort(activities.begin(), activities.end(), compare); int count = 1; int lastEnd = activities[0].end; for (int i = 1; i < activities.size(); i++) { if (activities[i].start >= lastEnd) { count++; lastEnd = activities[i].end; } } return count; }

  1. 时间复杂度和空间复杂度分析

    • 时间复杂度:主要取决于排序算法的时间复杂度,这里使用的是标准库的sort函数,其平均时间复杂度为O(n log n)O(nlogn),其中nn是活动的数量。遍历活动的时间复杂度为O(n)O(n),所以总的时间复杂度为O(n log n)O(nlogn)。

    • 空间复杂度:只使用了几个常量级别的额外变量,所以空间复杂度为O(1)O(1)。

(二)硬币找零问题

  1. 问题描述

    • 给定一定金额的找零和一些硬币的面值,用最少的硬币数量来凑出这个找零金额。例如有面值为1元、5角、1角的硬币,要找零8角钱。

  2. 算法设计

    • 问题分析:对于某些硬币组合,可以每次选择面值最大的硬币,这样能使硬币数量最少。

    • 建模:可以将硬币面值存储在一个数组中,找零金额作为一个变量。

    • 算法描述:从最大面值的硬币开始,尽可能多地使用该面值的硬币,直到剩余找零金额小于该面值,然后再选择下一个较小面值的硬币,重复这个过程。

  3. C++实现示例代码

#include <iostream> #include <vector> using namespace std; // 硬币找零函数 int coinChange(vector<int>& coins, int amount) { int coin_count = 0; int n = coins.size(); for (int i = n - 1; i >= 0; i--) { while (amount >= coins[i]) { amount -= coins[i]; coin_count++; } } if (amount > 0) return -1; return coin_count; }

  1. 时间复杂度和空间复杂度分析

    • 时间复杂度:假设硬币的种类为kk,找零金额为mm,在最坏情况下,每次都只能使用1个最小面值的硬币,时间复杂度为O(km)O(km)。

    • 空间复杂度:只使用了几个常量级别的额外变量,所以空间复杂度为O(1)O(1)。

三、贪心算法C++代码实现技巧

(一)问题建模

  1. 明确问题的目标和约束条件

    • 在开始编写代码之前,必须清晰地理解问题的目标是什么,例如是求最大值、最小值,还是寻找某种最优的组合等。同时,也要清楚问题的约束条件,如数据的范围、元素之间的关系等。以背包问题为例,目标是在有限的背包容量下装入价值最大的物品,约束条件就是背包的容量以及每个物品的重量和价值。如果没有准确把握这些,就很难构建出正确的贪心策略。

  2. 将问题转化为数学模型

    • 把实际问题转化为数学形式可以更方便地进行分析和求解。比如在活动安排问题中,可以将活动抽象为包含开始时间和结束时间的结构体,这样就可以利用数学上的比较和排序操作来处理活动之间的关系。在硬币找零问题中,把硬币面值和找零金额看作数字,通过数字之间的运算来确定找零的方案。这种数学模型的建立有助于确定数据结构的选择以及后续算法的设计。

(二)排序操作

  1. 确定排序的依据

    • 根据贪心策略,确定按照什么指标对数据进行排序。在活动安排问题中,按照活动的结束时间排序是因为我们希望先选择结束时间早的活动,这样能给后面的活动留出更多的时间。如果排序依据选择错误,可能会导致贪心算法无法得到正确的结果。例如在活动安排问题中,如果按照开始时间排序,就不能保证选择到最多的相互兼容的活动。

  2. 选择合适的排序算法

    • C++标准库提供了多种排序算法,如sort(快速排序的优化版本,平均时间复杂度为O(n log n)O(nlogn))、stable_sort(稳定排序,时间复杂度为O(n log n)O(nlogn)到O(n^2)O(n2)之间)等。在大多数情况下,sort算法就可以满足需求。但如果对排序的稳定性有要求(即相等元素的相对顺序在排序前后不变),就需要选择stable_sort。另外,如果数据规模较小且已知数据接近有序状态,插入排序等简单排序算法可能会有更好的性能。

(三)贪心策略的实现

  1. 设计每一步的最优选择规则

    • 这是贪心算法的核心部分。根据问题的目标和约束条件,设计出每一步选择的规则。例如在最优装载问题中(将一些物品装入一艘船,船的载重量有限,求最多能装多少物品,假设物品重量已知),贪心策略就是按照物品重量从小到大的顺序选择物品,只要船还能装下就选择该物品。这个规则的设计是基于想要尽可能多地装载物品,而轻的物品更有利于达到这个目标。

  2. 代码中体现贪心选择

    • 在代码中,要按照设计好的贪心选择规则进行逻辑编写。例如在上述最优装载问题的C++代码实现中,可以先对物品重量进行排序,然后依次检查每个物品是否能装入船中,能装就选择该物品并更新船的剩余载重量。通过这种方式在代码中实现贪心选择,确保每一步都按照贪心策略进行操作。

四、贪心算法C++优化方法

(一)优化贪心策略

  1. 深入分析问题结构

    • 有时候,初始设计的贪心策略可能不是最优的。需要更深入地分析问题的结构,寻找更有效的贪心策略。例如在找零问题中,如果硬币的面值不是常规的(如1元、5角、1角),而是一些特殊的值,初始的每次选择最大面值硬币的策略可能不适用。此时,可能需要重新分析不同面值硬币之间的关系,设计新的贪心策略。比如有面值为3元、5元、7元的硬币,找零11元时,直接选择最大面值7元硬币不是最优解(会剩下4元,需要3个1元硬币,共4个硬币),而先选择5元硬币(剩下6元,再选择3元硬币,共2个硬币)才是最优解。

  2. 结合其他算法思想

    • 可以结合其他算法思想来优化贪心算法。例如结合动态规划的思想,在贪心算法执行过程中,记录一些中间状态信息,避免重复计算。在某些图论问题中,如求单源最短路径的Dijkstra算法(一种贪心算法),可以结合堆数据结构(类似优先队列的思想)来优化算法的时间复杂度。堆可以快速找到当前未处理节点中的最短距离节点,从而提高算法效率。

(二)数据结构优化

  1. 选择合适的数据结构存储数据

    • 根据问题的特点选择合适的数据结构。在活动安排问题中,使用结构体数组来存储活动的开始时间和结束时间是比较合适的,这样方便进行排序和遍历操作。如果问题涉及到频繁的插入和删除操作,并且需要保持元素的顺序,可能链表这种数据结构会更合适。在处理图相关的贪心算法问题时,邻接矩阵或邻接表等数据结构可以用来存储图的信息,不同的选择会对算法的时间和空间复杂度产生影响。

  2. 利用C++标准库的数据结构和算法

    • C++标准库提供了丰富的数据结构和算法,如vectorlistmapset等容器以及各种算法函数(如排序、查找等)。合理利用这些可以提高代码的效率和可读性。例如在处理硬币找零问题时,可以使用vector来存储硬币面值,使用sort函数对其进行排序。在处理一些需要查找特定元素或者统计元素个数的问题时,mapset可能会非常有用。

(三)减少不必要的计算

  1. 避免重复计算

    • 在贪心算法执行过程中,可能会有一些计算是重复的。例如在计算某个问题的局部最优解时,如果多次用到某个子问题的结果,就可以考虑将这个结果缓存起来,避免重复计算。在一些递归形式的贪心算法实现中,这种情况比较常见。比如计算斐波那契数列的一种贪心策略(每次选择当前最小的两个数相加得到下一个数),如果不进行优化,计算过程中会有大量的重复计算,可以使用一个数组来缓存已经计算过的结果,从而提高算法效率。

  2. 尽早排除不可能的选择

    • 在每一步贪心选择时,如果能够尽早判断出某些选择是不可能达到最优解的,就可以提前排除这些选择,减少计算量。例如在活动安排问题中,在遍历活动时,如果某个活动的开始时间已经大于当前所能安排的最晚结束时间,就可以直接跳过这个活动,不需要再进一步判断它是否与后续活动兼容。

五、贪心算法C++常见错误与解决

(一)错误:贪心策略选择错误

  1. 问题表现

    • 最常见的错误就是选择了错误的贪心策略。例如在上述特殊硬币面值(3元、5元、7元)的找零问题中,如果仍然按照常规的选择最大面值硬币的贪心策略,就不能得到最优解。在活动安排问题中,如果按照活动的开始时间而不是结束时间进行排序和选择活动,可能会导致选择的活动数量不是最多的。

  2. 解决方法

    • 重新分析问题的结构和目标。仔细研究问题的约束条件和最优解的要求,尝试从不同的角度思考贪心策略。可以通过列举一些简单的实例,手动计算出正确的最优解,然后分析这个过程中应该遵循的贪心原则。例如在找零问题中,对于特殊的硬币面值组合,可以通过列举不同金额的找零情况,找到更合适的贪心策略,如先选择尽可能接近找零金额的硬币面值。

(二)错误:未考虑所有情况

  1. 问题表现

    • 在设计贪心算法时,可能只考虑了部分情况而忽略了其他情况。例如在一个任务调度问题中,每个任务有不同的优先级、执行时间和依赖关系。如果只考虑任务的优先级来安排任务执行顺序(贪心策略),可能会忽略任务之间的依赖关系,导致某些任务无法执行或者整体执行时间延长。

  2. 解决方法

    • 全面分析问题,列出所有可能影响结果的因素。在上述任务调度问题中,除了优先级,还要考虑任务的依赖关系和执行时间。可以构建一个更复杂的模型,例如使用有向图来表示任务之间的依赖关系,然后综合考虑各种因素来设计贪心策略。或者将问题分解为多个子问题,分别考虑每个子问题中的各种情况,再将子问题的解组合起来得到整体的解。

(三)错误:数据结构使用不当

  1. 问题表现

    • 选择的数据结构可能不适合问题的操作要求。例如在一个需要频繁查找元素是否存在的数据处理问题中,如果使用vector进行线性查找,当数据量较大时效率会非常低。或者在一个需要动态调整元素顺序的数据问题中,如果使用数组来存储数据,操作起来会很麻烦并且容易出错。

  2. 解决方法

    • 根据问题的操作特点重新选择合适的数据结构。对于需要频繁查找元素的问题,可以使用set或者map等数据结构,它们提供了高效的查找操作。对于需要动态调整元素顺序的问题,可以考虑使用list等数据结构。同时,要注意数据结构的初始化和维护,确保数据的正确性和完整性。

贪心算法注意事项

什么是贪心算法

贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。它通常用于解决那些具有最优子结构性质的问题。

贪心算法的基本步骤

  1. 选择:从当前状态中选择一个最优的选项。

  2. 验证:验证这个选择是否满足问题的约束条件。

  3. 更新:根据这个选择更新问题的状态,并进入下一步。

贪心算法的注意事项

  1. 局部最优不一定导致全局最优:贪心算法的关键在于每一步的选择是否能保证最终结果是最优的。如果局部最优选择不能保证全局最优,那么贪心算法可能无法得到正确的解。

    • 示例:在某些情况下,贪心算法可能会陷入局部最优解,而无法达到全局最优解。例如,在某些图论问题中,贪心算法可能无法找到最短路径。

  2. 问题的性质:贪心算法适用于具有最优子结构性质的问题。如果问题不具备这种性质,贪心算法可能不适用。

    • 示例:背包问题(0/1背包问题)通常不适合用贪心算法解决,因为它不具备最优子结构性质。

  3. 选择策略:选择策略是贪心算法的核心。不同的选择策略可能导致不同的结果。

    • 示例:在活动选择问题中,可以选择按结束时间排序或按开始时间排序,不同的排序策略可能导致不同的结果。

  4. 边界条件:在实现贪心算法时,需要注意边界条件和特殊情况的处理。

    • 示例:在处理空输入或只有一个元素的输入时,贪心算法需要特别处理,以避免出现错误。

  5. 时间复杂度:贪心算法通常具有较低的时间复杂度,但需要确保选择策略的实现不会引入额外的时间开销。

    • 示例:在选择排序策略时,如果排序的时间复杂度较高,可能会影响整体算法的效率。

总结

贪心算法是一种简单且高效的算法,适用于解决具有最优子结构性质的问题。然而,使用贪心算法时需要注意局部最优不一定导致全局最优、问题的性质、选择策略、边界条件和时间复杂度等问题。只有在充分理解问题并验证贪心策略的有效性后,才能确保贪心算法能够得到正确的解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2194914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于yolov8的200鸟类智能检测与识别系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的200种鸟类智能检测与识别系统是一款基于深度学习的目标检测系统&#xff0c;该系统利用YOLOv8框架&#xff0c;通过11788张图片训练出一个能够进行鸟类智能检测与识别的模型&#xff0c;可以识别200种不同的鸟类。 该系统采用Python与PyQt5开发&…

苹果电脑磁盘满了怎么清理内存?必看清理秘籍

对于很多Mac用户来说&#xff0c;随着时间的推移&#xff0c;电脑逐渐变慢并出现磁盘空间不足的提示是一件非常头疼的事情。正确理解内存和存储的区别&#xff0c;并采用有效的清理方法&#xff0c;对于保持Mac性能至关重要。本文将深入探讨如何有效清理Mac上的磁盘空间&#x…

一文看懂计算机中的大小端(Endianess)

文章目录 前言一、什么是大小端二、如何判断大小端三、大小端的转换3.1 使用标准库函数3.2 手动实现大小端转换 前言 本文主要探讨计算机中大小端的相关概念以及如何进行大小端的判断和转换等。 一、什么是大小端 大小端&#xff08;Endianess&#xff09;是指计算机系统在存…

CentOS7安装宝塔

第一步&#xff1a;安装 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh安装成功后会弹出这个页面 那么下次怎样再次打开这个页面呢&#xff1f; 输入这个&#xff1a; /etc/init.d/bt default…

YOLO v1详解解读

&#x1f680; 在此之前主要介绍了YOLO v5源码的安装和使用&#xff08;YOLO v5安装教程&#xff09;&#xff0c;接下来将探索YOLO的实现原理&#xff0c;作为一个金典的单阶段目标检测算法&#xff0c;应该深度的理解它的构建思想&#xff1b;所以本系列文章将从LOVO v1出发到…

JavaEE: 深入解析HTTP协议的奥秘(1)

文章目录 HTTPHTTP 是什么HTTP 协议抓包fiddle 用法 HTTP 请求响应基本格式 HTTP HTTP 是什么 HTTP 全称为"超文本传输协议". HTTP不仅仅能传输文本,还能传输图片,传输音频文件,传输其他的各种数据. 因此它广泛应用在日常开发的各种场景中. HTTP 往往是基于传输层的…

PCIe配置篇(0)——地址空间

一、地址空间回顾 在最开始&#xff0c;我们先来回顾一下PCIe的一些基本概念&#xff0c;首先&#xff0c;PCIe是PCI的延伸&#xff0c;全名叫 Peripheral Component Interface Express。从名字就能看出&#xff0c;这是一种外设总线协议。在整个系统中&#xff0c;外设只是其中…

算法与程序课程设计——观光铁路

观光铁路 一、任务 跳蚤国正在大力发展旅游业&#xff0c;每个城市都被打造成了旅游景点。 许多跳蚤想去其他城市旅游&#xff0c;但是由于跳得比较慢&#xff0c;它们的愿望难以实现。这时&#xff0c;小C听说有一种叫做火车的交通工具&#xff0c;在铁路上跑得很快&#x…

C语言基础(10)之指针(2)

在上一篇文章中我们谈到了指针&#xff0c;并给老铁们讲解了什么是指针、指针类型、野指针以及指针运算等知识。在这篇文章中小编将继续带大家了解指针的相关知识点。 1. 指针和数组 指针和数组之间又能有什么联系呢&#xff1f;在谈这个之前&#xff0c;我们先来讲讲指针和数…

深入分析——为什么未初始化的全局变量是零?

1、前言 #include <stdio.h>int temp;int main(void) {//打印temp的值是零printf("temp%d\n", temp);return 0; }在C语言编程中&#xff0c;我们默认未初始化的全局变量、静态局部变量的初始化值都是零&#xff0c;底层原理如下 未初始化的全局变量、静态局部…

揭秘AI写作工具:如何改变内容创作新格局

小伙伴们&#xff0c;今儿咱们来聊聊那些个让人眼前一亮、脑洞大开的AI写作神器——笔灵AI写作、宙语AI写作、博思白板AI写作&#xff0c;还有讯飞星火&#xff0c;它们啊&#xff0c;简直就是文案人儿的超级辅助&#xff0c;让咱们写东西的时候&#xff0c;灵感嗖嗖地往外冒&a…

TinyOS -数据发布实验

文章目录 简介分析 简介 分发协议主要用于维护网络共享配置的一致性&#xff0c;这里的共享配置可以是节点传感器采样的周期、节点LPL醒睡的周期或者节点运行程序的映像等。每个节点都会维护一份这样的配置&#xff0c;分发协议负责通知每个节点这些配置的改变&#xff0c;并通…

国产分布式数据库开启新篇章!详解安全可靠测评结果公告(2024年第2号)

重磅消息&#xff01;2024年的安全可靠测评结果&#xff08;数据库篇&#xff09;终于揭晓了&#xff01;&#x1f680; 9月30日&#xff0c;国庆前夕&#xff0c;中国信息安全测评中心和国家保密科技测评中心联合发布了今年第二号测评结果&#xff0c;这份名单有效期三年&…

大数据新视界 --大数据大厂之大数据驱动智能客服 -- 提升客户体验的核心动力

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

MATLAB与R语言在建模中的合作与应用(下篇)

目录 目录 模型训练的协同使用 1. 使用 R 语言进行统计建模 2. 使用 MATLAB 进行机器学习建模 模型评估与调优 1. 在 R 中评估模型性能 2. 在 MATLAB 中进行模型优化 实战示例&#xff1a;MATLAB 与 R 的协同建模 总结 在上篇文章中&#xff0c;我们介绍了 MATLAB 和 R…

打工人狂喜,轻松定时发圈

自动定时发圈软件有哪些优势&#xff1f; 1、不用下载安装软件 2、不需要绑定手机或电脑 3、不对电脑或手机做限制 4、不越狱不刷机 5、能更新迭代 6、有售后服务 7、使用安全登录&#xff0c;保障账号安全的 8、不用去做独立部署&#xff08;可以选择&#xff09; 9、…

class 032 位图

这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. 左程云的个人空间-左程云个人主页-哔哩哔哩视频…

重生之我们在ES顶端相遇第 20 章 - Mapping 参数设置大全(进阶)

文章目录 0. 前言1. 前置知识 - _source2. copy_to3. doc_values4. index5. enabled6. normalizer7. null_value8. 总结 0. 前言 在基础篇&#xff0c;我们只介绍了索引 Mapping 的基本用法。 本章将深入探讨日常中较经常使用的 Mapping 其他参数配置。 不想看过程&#xff0c…

Qt 实现动态时钟

1.实现效果 2.widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace

陪护小程序|护理陪护系统|陪护小程序成品

智能化&#xff0c;作为智慧医疗宏伟蓝图的基石&#xff0c;正引领着一场医疗服务的深刻变革。在这场变革的浪潮中&#xff0c;智慧医院小程序犹如璀璨新星&#xff0c;迅速崛起&#xff0c;而陪护小程序的诞生&#xff0c;更是如春风化雨&#xff0c;细腻地触及了老年病患、家…