10.9课上

2023-10-10 09:20
文章标签 10.9 课上

本文主要是介绍10.9课上,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

表达式求值(优先级方法)

用两个栈,一个栈用来存运算符,一个用来计操作数和运算结果

遇到操作数就进数栈,遇到操作符,根据操作符的优先级和运算符栈的栈顶元素比较,

如果栈顶大于等于,则不断从操作数里取俩数进行运算再放回去,直到优先级小于或只剩一个

如果栈顶小于,则直接入栈

特判如果相等且为终止符,则直接break

主持人调度复习

用一个队列,根据开始时间从小到大进行遍历,如果此时记录的数量都在工作,即此时的开始时间不大于已有的任何工作人的最早结束时间,那就需要一个新的人

否则,就是有大于最早的,那么就让最早结束的那个人来接手这个工作,即更新它记录的数,只更新它就够了,不需要再管其他可能已经结束的人,

但是需要让最早结束的人不断冒上来,所以是需要用小顶堆来实现的

最后的情况是堆里记录的数越来越大

堆的思想是这样,却也可以用数组来优化,就是用两个数组,一个是开始时间,一个是结束时间,都要排序,每个都有一个指针,主指针是开始时间,结束时间的指针指的是当前最早结束的人,如果早于现在的开始时间,就让它往后移,

反思

什么叫逻辑的第一个?

就是在原来的第一个的前面,如果插入了一个新元素,那么原来的第一就不是第一,那如果要遍历,是需要从逻辑上的第一个开始的,但”第一个“在不断更新,所以就需要一个绝对的变量来记录这个链表谁是第一个,并从其开始遍历

入栈时,或入队列时,数据结构中的元素和要新插入的元素需要满足某种关系,这才是模拟

取硬币

如果是深搜,两个参数,一个是当前的栈,一个是剩余次数

对每个栈都可以取或不取两种选择,

如果取的话,需要确定取多少,并确定取完后兜里的钱

不取直接下一个

递归终点是到最后一个栈,如果剩余次数为0,就和当前记录的最大值比一下

如果不为0,则不做操作return

记忆化一下就是走到这个栈时还有这么多取的次数时可以取的最大币值。

class Solution {
public:int maxValueOfCoins(vector<vector<int>> &piles, int k) {vector<int> f(k + 1);int sumN = 0;for (auto &pile: piles) {int n = pile.size();for (int i = 1; i < n; ++i)pile[i] += pile[i - 1]; // pile 前缀和sumN = min(sumN + n, k); // 优化:j 从前 i 个栈的大小之和开始枚举(不超过 k)for (int j = sumN; j; --j)for (int w = 0; w < min(n, j); ++w)f[j] = max(f[j], f[j - w - 1] + pile[w]); // w 从 0 开始,物品体积为 w+1}return f[k];}
};

 

 

这篇关于10.9课上的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/179554

相关文章

10.9-查看网络状态

netstat -lnp 查看监听端口 [root@evan-01 ~]# netstat -lnp 上面一部分是 tcp/ip ,下面一部分是监听的 socket(unix开头的行)。netstat 命令用来打印网络连接状况、系统所开放端口、路由表等信息。最常用的两种方法是 netstat -lnp (打印当前系统启动哪些端口)和 netstat -an(打印网络连接状况),他们非常有用,

数据结构头歌:2-1顺序栈-课上练(带超全注释+源代码)

一、顺序栈定义 二、初始化一个空的顺序栈 三、判断顺序栈是否为空 四、判断顺序栈是否已满 五、压栈push:插入数据元素x 六、弹栈pop:删除元素 七、取栈顶元素  八、利用栈实现数进制转换 1.弹出元素->输出 2.将data转换成k进制 创建栈L: 转换成二进制: 转换成八进制: 转换成16进制:

课上题目代码

dijkstra和spfa区别 : dikstra是基于贪心的思想,每次选择最近的点去更新其它点,过后就不再访问。而在spfa算法中,只要有某个点的距离被更新了,就把它加到队列中,去更新其它点,所有每个点有被重复加入队列的可能。 或者跟具体的说区别在于diikstra总是要找到dist最小的元素来作为父节点更新其他点,而不是直接取队头元素(当然如果是优先队列也是取队头元素) :更新的顺序不

【第九章——PyeCharts】【最新!黑马程序员Python自学课程笔记】课上笔记+案例源码+作业源码

第九章-数据可视化PyeCharts入门 9.1案例介绍 9.2JSON数据格式的转换 """演示json数据和python字典的相互转换"""import json# 准备列表,列表内每一个元素都是字典,将其转换为jsondata=[{"name":"张大帅","age":11},{"name":"王小丫","age":14},{"name":"李四","age":15}]js

【第十章——数据可视化之地图构建】【最新!黑马程序员Python自学课程笔记】课上笔记+案例源码+作业源码

第十章-数据可视化之地图构建 10.1数据可视化-地图-基础地图使用 注意!!!现在的版本,需要加:省,市 """演示地图可视化的基本使用"""from pyecharts.charts import Mapfrom pyecharts.options import VisualMapOpts# 准备地图对象map=Map()# 准备数据data=[("北京市",9),("上

10.9作业--林枫

3-1 import java.util.Scanner; public class AdditionQuiz {   public static void main(String[] args)   {     int number1=(int)(System.currentTimeMillis()%10);     int number2=(int)(System.currentTimeM

制作10.9 MAC OS U盘安装盘命令

sudo /Volumes/work/desktop/createinstallmedia --volume /Volumes/Untitled --applicationpath /Volumes/work/desktop/OS\ X\ Mavericks.app

11.7课上问题

一、Excel文件的读取与写入 1、读写操作步骤:(1)导入模块xlrd(2)打开工作簿Book(3)指定工作薄的表格单Sheet(4)根据行序列号读取内容 In [16]: #示例1:读取Stu_pack的Excel文件内容school.xls,将结果保存以列表中#(1)导入模块xlrdimport xlrd#(2)打开工作簿Bookwb = xlrd.open_work

java入门教程-10.9Java列表和组合框

列表和组合框是又一类供用户选择的界面组件,用于在一组选择项目选择,组合框还可以输入新的选择。 列表 列表(JList)在界面中表现为列表框,是JList类或它的子类的对象。程序可以在列表框中加入多个文本选择项条目。列表事件的事件源有两种: 一是鼠标双击某个选项:双击选项是动作事件,与该事件相关的接口是ActionListener,注册监视器的方法是addActionListener(),接

10.9.2 std::function 存储函数对象 Page184

41行,pending只是inc的复制品,所以43,44行,不会改变inc()的值 demo_function2()的运行结果: 59行,pending是inc的引用,所以61,62行将会改变inc()的值