算法之美~贪心算法

news2024/11/15 21:50:54

如何理解贪心算法?

假设有一个可以容纳100kg物品的背包,可以装各种物品。有以下5种豆子,每种豆子的总量和总价值都各不相同。为了让背包中所装物品的总价值最大,如何选择在背包中装哪些豆子?每种豆子又该装多少呢?

这个问题很简单,只要先算每个物品的单价,按照单价由高到低依次来装就好了。

贪心算法解决问题的步骤

第一步,针对一组数据,定义了限制值和期望值,希望从中选出几个数据,在满足限制值的情况下,期望值最大。

如上例子,限制值就是重量不超过100kg,期望值就是物品的总价值。

第二步,每次选择当前情况下,在对限制值同等贡献量的情况下,对期望值贡献最大的数据。

如上例子,每次选择单价最高的,也就是重量相同的情况下,对价值贡献最大的豆子。

第三步,举几个例子验证一下贪心算法的正确性。

用贪心算法解决问题的思路,并不总能给出最优解

依照贪心算法,求出的最短路径是S->A->E->T,路径长度是1+4+4 = 9

正真的最短路径是S->B->D->T,路径长度是2+2+2 = 6

贪心算法实战分析

  1. 分糖果

  1. 钱币找零

  1. 区间覆盖

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

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

相关文章

Pikachu靶场攻略(代码分析)

2023年将会持续于B站、CSDN等各大平台更新,可加入粉丝群与博主交流:838681355,为了老板大G共同努力。 一、安装 Phpstudy_pro设置数据库用户名密码 root 123456 更改\pikachu\inc\config.inc.php 访问pikachu页面点击配置即可。 二、 攻略(包含审计…

BiQuadDesigner相关算法研究

一、获取相关源码方法如下 1、打开BiQuadDesigner相关网页如下 2、菜单:更多工具->开发者工具 3、在此重点研究BiQuadDesigner,选择BiQuadDesigner下的javascript,分别查看BiQuad.js和BiQuadFilter.js 二、研究频响曲线生成步骤如下 1、参数输入及换算滤波器系数如下参…

【数据结构基础】线性表 - 栈和队列

知识点栈 - LIFO示意图实现使用数组实现的叫静态栈使用链表实现的叫动态栈队列 - FIFO示意图实现使用数组实现的叫静态队列使用链表实现的叫动态队列栈和队列相关题目用栈实现队列232. Implement Queue using Stacks (Easy)栈的顺序为后进先出,而队列的顺序为先进先…

【前端设计】复位保护模块的整体设计思路

前言 复位保护模块,是在单系统进行动态复位的过程中,对接口进行硬性逻辑保护,避免异步复位过程中的毛刺对周围系统产生影响的模块。一般而言,简单的单系统动态复位流程可以归纳为: 停止业务功能,收齐接口上的rsp,进入待复位状态;使能复位保护,通过逻辑避免毛刺和误触…

【SCL】博图SCL语言回顾和第一个面向对象程序

西门子SCL语言回顾复习和编写第1个面向对象程序 (形参:形参指的是指令上标记该指令要使用的数据位置的标识符;简单来说就是只有数据类型,没有实际的地址,在调用时可以写入)。 (实参:实参指的是包…

并发编程学习(九):同步模式之顺序控制、交替打印

1、固定运行顺序例如:两个线程,运行是必须先2后1打印。1.1、Object之wait、notify版在同步代码块中,wait开始后,CPU将释放给另一个线程使用,直到①若wait(xxxx),则x秒后当前线程被唤醒,继续占用…

STM32项目设计:基于stm32f103c8t6智能电梯系统

文章目录一、项目功能概述二、项目材料选择三、原理图设计四、PCB板设计五、主程序设计六、成品展示资料链接:待更新~ 哔哩哔哩视频链接:https://www.bilibili.com/video/BV17D4y1V7HG/?vd_sourcee5082ef80535e952b2a4301746491be0(bilibili…

STM32G431——串口通信

蓝桥杯嵌入式——串口通信 目录 USART 电平标准-TTL 电平标准与 RS232 电平标准 232通信标准 USB转232 异步通信 串口配置 程序设计 重定向 串口发送函数 发送字符串 串口接收——中断 1.USART 通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异…

集成测试最全详解,看完必须懂了

什么是集成测试 集成测试(Integration Testing),也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。 集成测试&#xff…

chatgpt的一些思考

结论国内同行对chatgpt的认识是不够的,太轻视这个模式的颠覆性认知chatgpt是对思维过程的仿真,rlhf过程就是通过强化学习方式在利用人思维过程训练模型chatgpt比搜索更通用化,搜索是对单个点信息的匹配,chatgpt是对思维链一个序列…

【python】多任务编程之线程、进程知识点详细总结

目录 多任务的执行方式 进程 概念 python多进程 线程 概念 python多线程 线程同步方式 线程等待 互斥锁 死锁 线程和进程对比 多任务的执行方式 进程 概念 python多进程 Windows下的main判断process进程类import multiprocessing import time def sing():for i i…

Unix环境高级编程_进程环境_启动代码,环境变量表,进程内存结构,库

这是《UNIX环境高级编程》第7章内容,这篇文章记录进程所需要的环境。 4 进程环境 程序加载到内存,运行起来后就成为了进程。就像人活着需要生活环境(衣食住行的环境)一样,进程也需要运行环境,进程所需要的…

Vue组件生命周期与钩子函数

组件生命周期 ​ 组件(组件是可复用的 Vue 实例)从创建到销毁的过程就是组件的生命周期,是一个时间段。 组件生命周期钩子函数 (vue3与vue2生命周期钩子函数略有不同,本文以vue2为主) ​ VUE 提供的生命…

科研快报 | 三代测序技术-海水微生物态,助力海水微生态及微生物基因组研究

PacBio研究专题二代测序读长偏短,环境宏基因组样品研究受到了很大限制。作者通过三代测序对来自地中海的冬季混合海水样本进行宏基因组测序。利用PacBio Sequel II平台的超长读长明显可以提升宏基因组的组装质量,又能显著提升MAGs质量。研究人员通过比较…

使用和登录Linux云服务器

目录 云服务器的购买 SSH登录云服务器 云服务器的购买 我们以腾讯云为例, 其他的服务器厂商也是类似。 1. 进入腾讯云官方网站:学生云服务器_云校园特惠套餐 - 腾讯云 (tencent.com) 2. 登陆网站(可以使用微信登陆) 3.购买云服务器 购买最低级即可,对于…

python - 科研文献作图复现1

记录阅读文献过程中,通过python复现原文的一些脚本 想要复现的文章原图如下所示 原文链接: https://file.scirp.org/Html/4-2430166_82999.htm 首先,对于原图进行简要观察。 这是一张折线图,绘制了6条不同颜色的折线来表示不同…

舆情监控软件免费下载,TOOM网络舆情监控软件服务流程?

舆情监测可以帮助个人和企业了解自己的网络形象,提高自我评价和评价能力,提升自我定位和竞争力。接下来简单了解舆情监控软件免费下载,TOOM网络舆情监控软件服务流程? 一、舆情监控软件免费下载 请登录TOOM舆情官网获取链接 1.企业客户&a…

SpringMVC(十三):SpringMVC拦截器介绍使用

文章目录 SpringMVC拦截器介绍使用 前言 一、拦截器使用 二、拦截器内容详解 1、preHandle方法 2、postHandle方法 3、afterCompletion方法 三、多个拦截器执行顺序 SpringMVC拦截器介绍使用 前言 在之前的系列文章里,我们学习了过滤器的知识。过滤器的作…

ejs模板在Express框架中的集成

在上一篇内容中已经使用了pug模板,那么本篇就来了解一下ejs模板在Express框架中的集成使用,ejs模板也是常用的模板引擎,支持在标签内直接编写javascript代码,通过javascript代码就能够生成HTML页面的,通过本期对ejs模板…

C++字符串全排列(递归法)和(迭代法)以及next_permutation底层原理详解

目录前言next_permutation的使用实现全排列的两种算法1. 递归法(全排列方便理解记忆的方法,作为备用方法)实现代码(无重复元素情况)有重复元素情况2. 迭代法(next_permutation底层原理)实现代码(有无重复不影响)前言 next_permutation/prev_permutation是C STL中的…