Algorithm基础算法学习

2023-09-18 16:00:24

算法学习

贪心算法

简介: 这种算法模式一般将求解过程分成若干个步骤,但每个步骤都应用贪心原则,选取当前状态下最好/最优的选择(局部最有利的选择),并以此希望最后堆叠出的结果也是最好/最优的解。这就好像一个贪婪的人,他事事都想要眼前看到最好的那个,看不到长远的东西,也不为最终的结果和将来着想,贪图眼前局部的利益最大化,有点走一步看一步的感觉,这也是很少情况下能得到全局最优解的原因。

贪心法则:求解过程分成若干个步骤,但每个步骤都应用贪心原则,选取当前状态下最好的或最优的选择(局部最有利的选择),并以此希望最后堆叠出的结果也是最好或最优的解

案例:假如需要找给顾客41分钱,现在的货币只有 25 分、20分、10 分、5 分和 1 分四种硬币,该怎么办?

按照贪心算法的三个步骤

1.41分,局部最优化原则,先找给顾客25分;
2.此时,41-25=16分,还需要找给顾客10分,然后5分,然后1分;
3.最终,找给顾客一个25分,一个10分,一个5分,一个1分,共四枚硬币。

但是,如果我们给他2个20分,加一个1分,三枚硬币是不是就可以了?

贪心算法的优缺点

优点:简单,高效,省去了为了找最优解可能需要穷举操作,通常作为其它算法的辅助算法来使用;

缺点:不从总体上考虑其它可能情况,每次选取局部最优解,不再进行回溯处理,所以很少情况下能得到最优解。

更多推荐

循环神经网络——上篇【深度学习】【PyTorch】【d2l】

文章目录6、循环神经网络6.1、序列模型6.1.1、序列模型6.1.2、条件概率建模6.1.2、代码实现6.2、文本预处理6.2.1、理论部分6.2.2、代码实现6.3、语言模型和数据集6、循环神经网络6.1、序列模型6.1.1、序列模型序列模型主要用于处理具有时序结构的数据,**时序数据是连续的,**随着时间的推移,

2023/9/17总结

VuedefineOptions为什么要使用defineOptions在有<scriptsetup>之前如果需要定义propsemit可以很容易的添加一个与setup平级的属性但是用了<scriptsetup>后就不能这样做了setup属性也就没有了,就不能添加与其平级的属性为了解决这个问题引入了defineProps

文件、预处理、位运算

10.2数据文件概述10.2.1ASCII文件与二进制文件ASCII文件就是“将需要保存到文件的信息使用ASCII字符表示,然后按照顺序将每个字符的ASCII码存储到文件中”。ASCII文件的优点是编码方式公开,可以被其它的文本编辑器打开;其缺点是效率比较低,信息冗余度高。二进制文件将数据在内存中的二进制形式原样存储到

十大排序算法及Java中的排序算法

文章目录一、简介二、时间复杂度三、非线性时间比较类排序冒泡排序(BubbleSort)排序过程代码实现步骤拆解演示复杂度选择排序(SelectionSort)排序过程代码实现步骤拆解演示复杂度插入排序(InsertionSort)排序过程代码实现步骤拆解演示复杂度二分插入排序(BinaryInsertionSort)代

数据可视化 -- ECharts 入门

文章目录引言1.ECharts的基本使用1.1ECharts的快速上手1.2相关配置讲解2.ECharts常用图表2.1图表1柱状图2.1.1柱状图的实现步骤2.1.2柱状图的常见效果2.1.3柱状图特点2.1.4通用配置2.2图表2折线图2.2.1折线图的实现步骤2.2.2折线图的常见效果2.2.3折线图的特点2.3

【iOS】单例模式

文章目录前言一、单例模式简介二、单例模式优缺点优点缺点三、模式介绍1.懒汉模式2.饿汉模式总结前言在最初进行OC的学习时笔者了解过单例模式的基本使用,现撰写博客加深对单例模式的理解一、单例模式简介单例模式是一种常见的设计模式,其主要目的是确保一个类只有一个实例,并提供全局访问点。这样就大大节省了我们的内存,防止一个实例

2023年7月京东平板电脑行业品牌销售排行榜(京东销售数据分析)

鲸参谋监测的京东平台7月份平板电脑市场销售数据已出炉!根据鲸参谋电商数据分析平台的相关数据显示,今年7月份,京东平台上平板电脑的销量为68万+,同比增长超过37%;销售额为22亿+,同比增长约54%。从价格上看,平板电脑的市场均价同比增长约12%。可以看到,与去年同期相比,今年7月平板电脑市场呈现出良好的增长态势。*数

Go语言高级特性解析与实践

1.并发模型与goroutineGo语言以其强大的并发模型而闻名,它的核心机制是goroutine。goroutine是一种轻量级线程,由Go运行时负责调度。我们可以通过go关键字创建goroutine,而不需要像传统的线程编程那样关注底层的线程管理。示例代码:packagemainimport("fmt""time"

蓝桥杯打卡第14天

文章目录最短路径最短路径一、最短路径OJ链接本题思路:本题是一道简单的图论题,用floyd算法还是比较简单的,因为代码很短,这里需要用一个backup用来保存未删除边时的情况。当走完一次floyd之后,拷贝给dist数组来进行删除边的处理。当然不拷贝回去直接用这个backup数组也是可以进行删边处理的。#include

GE IS420UCSCH2A-C-V0.1-A模拟量输入模块

GEIS420UCSCH2A-C-V0.1-A模拟量输入模块是一种用于数据采集和监测的电子模块,通常应用于工业控制系统、监测设备和自动化系统中。以下是可能与该模拟量输入模块相关的一些产品特点:多通道输入:GEIS420UCSCH2A-C-V0.1-A模拟量输入模块通常具有多个输入通道,允许同时连接多个模拟传感器或测量点

SQLite 学习笔记1 - 简介、下载、安装

SQLite简介SQLite是一款非常轻量级的关系数据库系统,支持多数SQL92标准。SQLite是世界上使用最广泛的数据库引擎。SQLite内置于所有手机和大多数计算机中,并捆绑在人们每天使用的无数其他应用程序中。SQLite是一个由C语音开发的嵌入式库,具有小型、快速、自包含、高可靠、功能齐全等特点。SQLite特

热文推荐