常见jvm面试题,【C++】算法集锦(4):给人看的动态规,java分布式锁的面试-程序员宅基地

技术标签: 2024年程序员学习  jvm  算法  c++  

  • 动态规划解题步骤

  • 老生常谈:凑零钱问题

  • 其他和动归相关篇章


动态规划


动态规划问题,它不叫动态规划算法,因为它不是一种算法,它是一众类型的问题的统称。

我们前面两篇的“递归算法”、“回溯算法”,以及接下来会讲的“贪心算法”等都属于动态规划的范畴。

所以这一篇是会持续翻新的,每写一种相关文章,都会在这里呈现出来。

那么,到底什么是动态规划呢?

在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果。因此各个阶段决策的选取不能任意确定,它依赖于当前面临的状态,又影响以后的发展。当各个阶段决策确定后,就组成一个决策序列,因而也就确定了整个过程的一条活动路线.这种把一个问题看作是一个前后关联具有链状结构的多阶段过程就称为多阶段决策过程,这种问题称为多阶段决策问题。在多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决策依赖于当前状态,又随即引起状态的转移,一个决策序列就是在变化的状态中产生出来的,故有“动态”的含义,称这种解决多阶段决策最优化的过程为动态规划方法 。


动态规划解题步骤


不扯那些弯弯绕的。

第一步:画出暴力解法流程。

第二步:画出决策树(看着直观)

第三步:写出状态转移方程

第四步:决策树剪枝

第五步:再优化:确定边界

如果看了前面递归那篇的话,这里就不难理解了。【C++】算法集锦(2):递归精讲

这五步列在这里,并不是说每一步都要严格的执行,我们的目标是解决问题,解决动态规划问题就需要状态转移方程,要写出好的状态转移方程就需要决策树以及决策树的剪枝优化,要画出决策树,最好有个暴力解的流程图。

不要看不起暴力求解,动态规划问题最困难的就是写出状态转移方程,即这个暴力解。优化方法无非是用备忘录或者 DP table,再无奥妙可言。

看一下上面递归那篇,里面的“爬楼梯”栗子。


老生常谈:凑零钱问题


先看下题目:给你 k 种⾯值的硬币,⾯值分别为 c1, c2 … ck ,每种硬币的数量无限,再给⼀个总金额 amount ,问你最少需要⼏枚硬币凑出这个 金额,如果不可能凑出,算法返回 -1 。

比方说 k=3,面值分别为:1,2,5。总金额:8。

那么我们该如何来解决这个问题?

⾸先,这个问题是动态规划问题,因为它具有「最优子结构」的。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

俗话说,好学者临池学书,不过网络时代,对于大多数的我们来说,我倒是觉得学习意识的觉醒很重要,这是开始学习的转折点,比如看到对自己方向发展有用的信息,先收藏一波是一波,比如如果你觉得我这篇文章ok,先点赞收藏一波。这样,等真的沉下心来学习,不至于被找资料分散了心神。慢慢来,先从点赞收藏做起,加油吧!

另外,给大家安排了一波学习面试资料:

image

image

以上就是本文的全部内容,希望对大家的面试有所帮助,祝大家早日升职加薪迎娶白富美走上人生巅峰!

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wfegre/article/details/137483595

智能推荐

Python自然语言处理-带你玩转NLTK库常见操作_nltk.corpus.words.words()-程序员宅基地

文章浏览阅读1.1k次,点赞3次,收藏13次。from nltk.book import * # 加载语料库text1.concordance('monstrous') # 搜索文本上下文text1.similar('monstrous') # 查找与monstrous拥有共同上下文的词text2.common_contexts(['monstrous','very'])text4.dispersion_plot(['America','citizen','democracy','freedom']) # 文中分布位置text3.gener._nltk.corpus.words.words()

【webrtc】Chrome和Firefox在SDP协商过程中,针对localhost的不同处理

mDNS(Multicast DNS,多播DNS)是一种基于DNS(域名系统)的协议,它允许局域网内的设备在没有传统DNS服务器的情况下相互发现和通信。mDNS使用组播技术,通过在局域网内发送广播消息来实现设备的发现和通信。它使用的默认端口是5353。mDNS的工作原理是,当一个设备加入到局域网中,如果它开启了mDNS服务,就会向局域网内的所有设备发送组播消息,告知自己的存在以及IP地址等信息。其他开启mDNS服务的设备接收到这些消息后,就可以响应并提供自己的信息。

机器学习笔试面试超详细总结(二)_机器学习算法笔试-程序员宅基地

文章浏览阅读7.6k次,点赞5次,收藏74次。51、概率和信息量的关系52、数据清理中,缺失值的处理方法53、统计模式分类问题54、语言模型0概率问题55、逻辑回归和多元回归分析的不同56、关于Word2Vec57、词向量58、二次准则函数的H-K算法比感知器的优势59、卷积之后特征图谱的大小60、矩阵计算效率61、数据过大时,那种梯度下降方法更好62、选择神经网络深度时,需要考虑哪些参数63、如何利用已有训..._机器学习算法笔试

Unity3D Camera设置结合OpenGL详细解读_unity配合opengles-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏5次。首先,总体概述。Unity里面的Camera是把渲染画面,最终呈现在屏幕上的最后一步操作。所有的渲染操作最终都要通过Camera在呈现。如果用OpenGL来实现,Camera做了一下几个事情。通过正交或是透视,剪裁平面,得到一个4x4的矩阵数据。这个矩阵就是,model-view-projection中的projection。所有物体的旋转R,平移T,缩放S,形成的矩阵数据_unity配合opengles

Python来计算 1,2,3,4 能组成多少个不相同且不重复的三位数?

我们今天的例子是 有 1,2,3,4 四个数字,它们能组成多省个互不相同且无重复的三位数?都分别是多少?

理解CSS中的sticky与fixed定位

在CSS中,和是两种常见的定位方式,它们可以让元素脱离文档流,并具有固定位置的效果。然而,它们在实际应用中有着不同的特点和使用场景。

随便推点

为PaaS云平台提供整合的全栈式监控_全栈集中状态监测服务-程序员宅基地

文章浏览阅读2.5k次。作为一项日益受到欢迎的技术,平台即服务(Platform-as-a-Service,PaaS)可以在云端部署能够通过Web访问的应用。借助PaaS,用户不必关注详细的执行信息,例如操作系统、资源分配、网络配置以及业务生态系统管理。同时,PaaS可以实现负载均衡、资源伸缩和容错功能的自动化。应用开发人员从而得以专注于编程和创新,无需考虑部署和系统问题。_全栈集中状态监测服务

浅谈未定义行为(Undefined behavior)_计算机未定义行为-程序员宅基地

文章浏览阅读4.2k次。一、维基百科:在计算机编程中,未定义行为(英语:Undefined behavior)是指行为不可预测的计算机代码。这是一些编程语言的一个特点,最有名的是在C语言中。[1]在这些语言中,为了简化标准,并给予实现(根据我的理解,这里的“实现”指的是编译器)一定的灵活性,标准特别地规定某些操作的结果是未定义的,这意味着程序员不能预测会发生什么事。二、实例请看我在csdn的php发过的一_计算机未定义行为

获取webshell权限的45种方法_.net站点拿webshell-程序员宅基地

文章浏览阅读10w+次,点赞2次,收藏16次。1, 到GoogLe,搜索一些关键字,edit.asp? 韩国肉鸡为多,多数为MSSQL数据库! 2, 到Google ,site:cq.cn inurl:asp 3, 利用挖掘鸡和一个ASP木马. 文件名是login.asp 路径组是/manage/ 关键词是went.asp 用'or'='or'来登陆 4, 关键字:Co Net MIB Ver 1.0网_.net站点拿webshell

边缘设备接入华为云并在线进行模拟设备测试_边缘计算设备怎么接入云-程序员宅基地

文章浏览阅读5.1k次。此案例以一个灯的开关控制为演示(嵌入式点灯工程师)总体流程1.创建产品1.1 访问华为云 IoT 管理控制台华为云官网进入设备接入服务选择“产品”->“IoT 物联网”->“设备接入 IoTDA”;点击免费试用确认控制台为北京四1.2 模型定义​此处个人理解为对灯的属性和功能进行定义 产品->创建产品创建产品此时产品中出现刚创建的产品2.产品定义2.1 产品属性定义点击产品名称“LED_IOT”,进入产品详情页点击“模型定义”->“自_边缘计算设备怎么接入云

PD生成兼容Oracle、Mysql脚本-程序员宅基地

文章浏览阅读82次。mysqldate 改为 datetime->运行sql脚本Oracle"clustered"替换为空,即key(XX)->运行sql脚本转载于:https://www.cnblogs.com/vvonline/p/10215134.html..._pd转化oracle至mysql

七、四个步骤实现FFmpeg推流播放实战

nginx-http-flv-module的。# 添加RTMP服务。

推荐文章

热门文章

相关标签