C++算法 —— 贪心(1)介绍

news2024/11/24 8:48:47

文章目录

  • 1、什么是贪心算法
  • 2、特点
  • 3、学习方向


1、什么是贪心算法

贪心应当是一个策略,通过局部找到最优,来找到全局最优。它把解决问题的过程分为若干步,解决每一步的时候,都选择当前看起来最优的解法,通过这样做希望得到全局最优解。

看三个问题

找零问题。我有四种无限量的钞票,20,10,5,1,如何凑齐46?

现在把目光放到我有的每一个数字上,这时候就是划分成小问题了。

局部最优,通俗理解就是每一小步都要最接近目标的选择,不管后续如何

所以这里会是这样选择,两个20,一个5,一个1。


最小路径问题。这个在动规篇里提到过。假设一个二维数组,每个位置都有数,从左上角走到右下角,只能向右或向下,求最小的路径和,也就是每一步走到的位置的数字,所有的加起来应当最小。

既然要最小,那么每一步走之前,比较右边和下边两个数字哪个更小,就挑选哪个。我们希望最后生成的路径的和最小,只是在这个问题,贪心并不一定找到最小。下图中绿线就是贪心路径,紫线才是真实答案。

在这里插入图片描述


背包问题。有一些东西,每个东西都有自己的体积和价值,拿一些东西装满背包,背包最大容量为8。v是容量,w是价值,求最大价值。

在这里插入图片描述
如果看体积,那么可以选择8个体积为1的,如果看价值,那么按照贪心算法,可以选择体积为5,价值为10的那个,选1个,然后再选3个体积为1,价值为1的那个。但是实际上答案应当是两个体积为4,价值为7的,这样最大价值就是14。

2、特点

贪心策略的提出是没有标准和模板。动规我们有常用的以某个位置为结尾,或者一类问题的比较通用的状态表示,以及还可以根据经验来提出状态。但贪心策略的提出千奇百怪,没法归纳出一个通用的表示,只能通过自己多做,多看,每次都分析一下题目再去写。

贪心策略有可能是错误的,证明它的错误很简单,举一个反例就行,就像上面的背包和路径问题;但是证明其正确是不简单的,这里就用到了数学方法。

3、学习方向

贪心的策略很多很多,怎么找到这个策略,有时也难以清楚地讲解出来。遇到不会的贪心题很正常,试着去解,按照以前解过的题目的解法去做就好。每次做题,都把这道题用到的策略记下来,以后也许会用到。

贪心的每篇博客最后都会写上证明。如果不想看证明,只想知道代码可以不用看这部分。

结束。

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

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

相关文章

Python数据分析实战-实现F检验(附源码和实现效果)

实现功能 F 检验(F-test)是一种常用的统计方法,用于比较两个或多个样本方差是否存在显著差异。它可以应用于多种场景,其中一些常见的应用场景包括: 方差分析(ANOVA):F 检验在方差分…

【软考-中级】系统集成项目管理工程师-进度管理历年案例

持续更新。。。。。。。。。。。。。。。 进度管理历年案例和解析 2023 上 试题二(20分)2023 上 试题二(20分) 问题1(5分) 结合案例: (1)请写出项目关键路径,并计算项目工期。 答案:项目关键路径 ACEFGJKN,项目工期 80 解析(2)如果活动L工期拖延10天,对整个工期是否有影响…

C语言-程序环境和预处理(1)编译、连接介绍以及预处理函数,预处理符号详解及使用说明。

前言 本篇文章讲述了程序的翻译环境和执行环境,编译、连接,预定义符号,#define,#符号和##符号的相关知识。 文章目录 前言1.程序的翻译环境和执行环境2.编译链接2.1 翻译环境2.2 运行环境 3.预处理详解(各预处理符号使…

Java之SPI

Java的SPI(Service Provider Interface)是一种面向接口编程的机制,用于实现组件之间的解耦和扩展。通过SPI机制,我们可以定义接口,并允许第三方提供不同的实现,从而实现可插拔、可扩展的架构。 SPI讲解 它…

Studio One6.5最新中文版安装步骤

在唱歌效果调试当中,我们经常给客户安装的几款音频工作站。第一,Studio One 6是PreSonus公司开发的一款功能强大的音频工作平台,具有丰富的音频处理功能和灵活的工作流程。以下是Studio One6的一些主要特点: 1.多轨录音和编辑&…

ezEIP信息泄露

漏洞描述 ezEIP存在信息泄露漏洞,通过遍历Cookie中的参数值获取敏感信息 漏洞复现 漏洞Url为 /label/member/getinfo.aspx访问时添加Cookie(通过遍历获取用户的登录名电话邮箱等信息) WHIR_USERINFORwhir_mem_member_pid1;漏洞证明&…

同比增长29.89%,长城汽车9月销售新车超12万辆

10月8日,长城汽车股份有限公司(股票代码601633.SH、02333.HK、82333.HK;以下简称“长城汽车”)发布2023年9月产销数据。今年9月,长城汽车销售新车121,632辆,同比增长29.89%,1-9月累计销售864,04…

安捷伦E9321A射频传感器

安捷伦E9321A射频传感器 E9321A 是 Agilent 使用的 6 GHz 0.1 瓦射频传感器。电子测试设备传感器测量波形的功率,例如多音和调制射频 (RF) 波形。传感器使用二极管检测器收集高度精确的调制测量值。50 MHz 至 6 GHz 300 kHz 视频带宽 功率范围:-65 至 20…

Android JNI调用流程

文章目录 前言一、JNI是什么二、JNI的优劣三、JNI的开发流程Java调用C函数1、创建声明native方法的Java工程,加载native函数的动态库,生成.h文件2、创建实现C函数的C工程,将本地代码编译成动态库C函数和Java本地方法的隐式映射(相…

压缩炸弹,Java怎么防止

一、什么是压缩炸弹,会有什么危害 1.1 什么是压缩炸弹 压缩炸弹(ZIP):一个压缩包只有几十KB,但是解压缩后有几十GB,甚至可以去到几百TB,直接撑爆硬盘,或者是在解压过程中CPU飙到100%造成服务器宕机。虽然…

11-网络篇-DNS步骤

1.URL URL就是我们常说的网址 https://www.baidu.com/?from1086k https是协议 m.baidu.com是服务器域名 ?from1086k是路径 2.域名 比如https://www.baidu.com 顶级域名.com 二级域名baidu 三级域名www 3.域名解析DNS DNS就是将域名转换成IP的过程 根域名服务器&#xff1a…

python2 paramiko 各种报错解决方案

一、介绍 paramiko是一个基于SSHv2协议的python库,支持以加密和认证的方式进行远程服务器的连接,用于实现远程文件的上传、下载或通过ssh远程执行命令。 paramiko支持Python(2.7,3.4)版本 paramiko库可直接使用pip …

谈谈C++中模板分离式编译出现的一些问题

什么是分离式编译 通俗的来讲就是将声明和定义分离在不同文件中 一个程序由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有 目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。 正常函数与模板分离式编译 看代码&…

生物制剂\化工\化妆品等质检损耗、制造误差处理作业流程图(ODOO15/16)

生物制剂、化工、化妆品等行业,因为产品为液体,产品形态和质量容易在各个业务环节发生变化,常常导致实物和账面数据不一致,如果企业业务流程不清晰,会导致系统大量的库存差异,以及财务难以核算的问题&#…

上门服务小程序源码 理疗,足疗,美容SAP上门服务小程序源码

上门服务小程序源码 理疗,足疗,美容SAP上门服务小程序源码 运行环境:Nginx 1.20PHP7.1MySQL 5.6 通过HBuilder X编译小程序APP版本 一、上门预定操作 1、技师管理。 技师满意度进行统一跟踪评估,进行分级管理,分级…

Web测试框架SeleniumBase

首先,SeleniumBase支持 pip安装: > pip install seleniumbase它依赖的库比较多,包括pytest、nose这些第三方单元测试框架,是为更方便的运行测试用例,因为这两个测试框架是支持unittest测试用例的执行的。 Seleniu…

Canal安装

安装和配置Canal Canal Framework 是阿里巴巴开源的一款基于数据库增量日志解析和同步的数据中间件。它主要用于解决分布式系统中数据同步的问题,支持多种数据源,如 MySQL、SQL Server、PostgreSQL、Oracle 等,同时也支持多种数据目标&#…

函数栈帧的创建与销毁(保姆级讲解)

局部变量是怎么创建的? 在为main函数开辟栈帧空间时,在一定范围内初始化成0CCCCC,再把里面0CCCC的一些开辟空间给局部变量使用。 为什么局部变量的值是随机值? 因为我们在为main函数开辟栈帧空间时,会将一定范围内空间初始成0CCCCCC里面…

【宏实现二进制奇偶位交换】

文章目录 一. 二进制奇偶位交换说明意思?二. 解题思路三. 代码验证四. 总结 一. 二进制奇偶位交换说明意思? 就是一个int类型的整数在操作系统下是32位二进制01序列,第一位和第二位交换,第二位和第三位交换,依次类推。…

口袋参谋:生意参谋指数转换工具,比对手更了解对手!

​所谓“知己知彼,百战不殆”,比对手更了解对手,就是提升自己的好机会。 在竞争如此激烈的淘宝天猫上,淘宝平台为了保护商家店铺数据,将真实数值全部隐藏,变成了指数。 所以我们查看市场排行、市场大盘、竟…