【零基础】学python数据结构与算法笔记13-贪心算法

news2024/12/23 22:24:32

文章目录

  • 前言
  • 80.贪心算法(新一章:算法进阶)
  • 81.分数背包
  • 82.分数背包实现
  • 83.数字拼接问题
  • 84.数字拼接问题实现
  • 85.活动选择问题
  • 86.活动选择问题实现
  • 87.贪心算法总结
  • 总结


前言

学习python数据结构与算法,学习常用的算法,
b站学习链接

80.贪心算法(新一章:算法进阶)

贪心算法(又称贪婪算法)是指,对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。
贪心算法并不保证会得到最优解,但是在某些问题上贪心算法的解就是最优解。要会判断一个问题能否用贪心算法来计算。

找零问题:
在这里插入图片描述
从最大的面额找,t默认是倒序的,加入找零376元
在这里插入图片描述
最后3张100,1张50,1张20,一张5,一张1。

81.分数背包

在这里插入图片描述
举例:
在这里插入图片描述
对于0-1背包和分数背包,贪心算法是否都能得到最优解?
对于0-1背包,首先看单位内的商品价值,商品1单价6,商品2单价5,商品3单价4,先拿最贵的商品1,再拿商品2,最后只剩下20kg装不下商品3,最后拿到价值160的商品,但这不是最优的,最优的是220。
而对于分数背包,都能装满,所以可以得到最优解。

82.分数背包实现

w是背包的大小,背包大小/最后商品的重量 为带走的分数(几分之几的商品,比如2/3铜沙)
在这里插入图片描述

83.数字拼接问题

在这里插入图片描述
94 和32比的话 很好比,位数相同94>32 就把94放前面
128 和1286比 1286128 1286在前
728和7286比 7287286 728在前
位数不同就不好比,可以转换一下思路,看哪个拼接后大就用哪个
a+b if a+b>b+a else b+a

84.数字拼接问题实现

也可以按照上面的思路自己用冒泡法交换排序,这里用了python内置的函数实现。
这里是降序。

在这里插入图片描述

85.活动选择问题

在这里插入图片描述
贪心结论:最先结束的活动一定是最优解的一部分
在这里插入图片描述
就是说,我找最先结束的就是最优解里的,开始前把活动按照最先结束的时间顺序,升序排序。
先找第一个活动,最后结束是4,那我第二个活动不能找了,它第三个开始的,只能从第4个活动再开始。

86.活动选择问题实现

在这里插入图片描述

87.贪心算法总结

这些问题求解的都是最优解,最多,最大问题
而这些不能解决的,比方说0-1背包问题,我们下次讲动态规划来实现。

总结

学习了贪心算法的4个例子

文章目录

  • 前言
  • 80.贪心算法(新一章:算法进阶)
  • 81.分数背包
  • 82.分数背包实现
  • 83.数字拼接问题
  • 84.数字拼接问题实现
  • 85.活动选择问题
  • 86.活动选择问题实现
  • 87.贪心算法总结
  • 总结


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

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

相关文章

LeetCode(Array)1656. Design an Ordered Stream

1. 问题 There is a stream of n (idKey, value) pairs arriving in an arbitrary order, where idKey is an integer between 1 and n and value is a string. No two pairs have the same id. Design a stream that returns the values in increasing order of their IDs b…

2023年网络安全比赛--网页渗透测试中职组(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.访问服务器网站目录1,根据页面信息完成条件,将页面中的flag提交; 2.访问服务器网站目录2,根据页面信息完成条件,将页面中的flag提交; 3.访问服务器网站目录3,根据页面信息完成条件,将页面中的flag提交; 4.访问服务器网…

【Java】流式编程学习笔记

文章目录一、流简介二、创建流2.1 由值创建流:of2.2 由列表创建流:stream2.3 由 Builder 创建流:build2.4 由文件生成流:lines2.5 由函数生成流2.5.1 迭代(如果不做限制,就是创建无限流)&#x…

线性结构之单链表详解

文章目录前言一.单链表的结构体二、单链表的基本接口1.SListMalloc(申请节点)2.SListPushBack(尾插)3.SListPushFront(头插)4.SListPopBack(尾删)5.SListPopFront(头删&a…

0115 作用域,对象

作用域意义:一段代码中所用到的名字不总是有效可用的,限定这个名字的可用性代码范围全局作用域全局有效,作用所有代码局部作用域局部有效,作用于函数内的代码环境,和函数有关也称函数作用域块级作用域在大括号{}有效&a…

Docker中安装Centos

window版的docker 1.cmd拉取centos镜像 docker pull centos2.启动centos容器,并把docker上centos的22端口映射到本机50001端口(端口号可以自己指定) 3.进入到Centos容器 通过docker命令,查看当前存在的镜像或者容器 查看镜像: docker images查看容器: docker …

js如何实现随机数切换

前言在一些电商网站,或一些活动页上,看到一些特效,比如:抽奖时,点击图片,实现图片的随机切换,数字的随机切换等,为了吸引用户的注意力,增加网页的互动性,这个效果是怎么实现的呢01具体示例https://coder.itclan.cn/fontend/js/14-click-num-suiji/点击文末左下角阅读原文,即可查…

MySQL三大日志(binlog、redo log和undo log)详解

MySQL三大日志binlog、redo log和undo log详解1.redo logredo log概述刷盘时机innodb_flush_log_at_trx_commit0innodb_flush_log_at_trx_commit1innodb_flush_log_at_trx_commit2日志文件组2.binlogbinlog 概述记录格式写入机制刷盘时机3.两阶段提交4.undo log5.总结1.redo lo…

SSL和TLS协议如何提供身份验证、机密性和完整性

SSL 和 TLS 协议使两方能够相互识别和验证,并以机密性和数据完整性进行通信。SSL 和 TLS 协议通过 Internet 提供通信安全性,并允许客户端/服务器应用程序以保密和可靠的方式进行通信。这些协议有两层:记录协议和握手协议,它们位于…

要命!我篡改了系统命令惊现事故,竟要扣我年终奖-Golang-cobra

打工还是要打工的。。我最后也没发出去。 紧急处理以后,现在写复盘,大家随我看看我到底是在学习哪些内容。 (以上内容纯属虚构,如有雷同纯属巧合) 简介 之前我们讲过pflag和os.Args,现在说说cobra这个命令行…

如何将SQL Server数据从表导出到CSV文件

在本文中,我们将使用四种不同的工具将表从SQL Server导出到.csv文件。此外,你将学习如何将带有或不带有头的SQL查询结果导出到.csv文件。 SQL Server数据从表导出到CSV文件 使用SQL Server Management Studio将SQL结果导出到具有或不具有标题的CSV文件一、不带标题二、带标题…

图形编辑器:图形和辅助线绘制的坐标问题

大家好,我是前端西瓜哥。今天看看绘制图形和辅助线时,坐标转换的一些注意点。 项目地址,欢迎 star: https://github.com/F-star/suika 线上体验: https://blog.fstars.wang/app/suika/ 先回顾一下之前讲的视口坐标和场…

docker镜像与容器实践

一、引子 镜像和容器是不同的概念,本文主要是为了通过实践来强化对这两种不同概念的理解。 二、安装docker 安装docker,执行以下命令即可: # 安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 # 设置国内源 yum-co…

显示Linux系统上的服务

init 和 systemd 都是 Linux的 init 守护进程,systemd出现较晚,最近的 Linux 发行版中很常用。init 使用service命令管理服务,而Systemd用systemctl命令管理服务。init 和 systemd 都是 Linux的 init 守护进程,即使你的 Linux 系统…

Maven3.8.*系列 settings.xml详解

文章目录文末,拿完整Settings配置文件设置参考介绍简要概述设置详细信息简单的价值观插件组服务器密码加密的镜像代理配置文件激活性能库插件的储存库活动概况直达文末,拿完整Settings配置文件结语文末,拿完整Settings配置文件 设置参考 介绍 简要概述 的 settings 元素 set…

返乡上云图

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

PicGo+Github搭建图床

文章目录一、Github仓库创建二、配置PicGo三、实际体验四、PicGo 2.3.1参考资料一、Github仓库创建 PS:它只会显示一次,所以最好把它复制下来到你的备忘录存好,方便下次使用,否则下次有需要重新新建; 二、配置PicGo …

Linux进程控制(进程退出+进程等待)

目录 一、子进程创建 1.1 fork函数深入 1.2 写时拷贝 二、进程退出 2.1.1 进程退出码概念 2.1.2 系统退出码文字描述 2.1.3 _exit和exit函数 2.1.4 查看退出码 三、进程等待 3.1 进程等待解决僵尸进程 3.2 进程等待方法 3.2.1 wait 3.2.2 waitpid() 四、…

seata部署指南(v1.6.1)

Seata 搭建 db模式版本 V1.6.1一、 简介二、下载三、建表(仅db)四、配置 seata server 参数4.1、V1.4.2之前方式4.2、V1.4.2 之后推荐方式(seataServer.properties)五、配置Server5.1、 修改 appplication.yml5.1.1、 修改 appplication.yml seata.store…

文件操作(File类)

文章目录一、初识文件二、File类构造方法常用方法一、初识文件 我们目前是如何存储数据的?弊端是什么? int a 1; int[] arr new int[5];我们这些数据是在内存中存储的,是不能够长久保存的。 那么,我们的计算机当中有没有一块硬件可以长久存储数据…