力扣9.26
931. 下降路径最小和
给你一个 n x n
的 方形 整数数组 matrix
,请你找出并返回通过matrix
的下降路径 的 最小和 。
下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 (row, col)
的下一个元素应当是 (row + 1, col - 1)
、(row + 1, col)
或者 (row + 1, col + 1)
。
数据范围
n == matrix.length == matrix[i].length
1 <= n <= 100
-100 <= matrix[i][j] <= 100
分析
简单dp
代码
class Solution {
public:int res = 0x3f3f3f3f;int n;const static int N = 105;int dp[N][N];int minFallingPathSum(vector<vector<int>>& matrix) {n = matrix.size();for(int i = 1; i <= n; i ++ ) {for(int j = 1; j <= n; j ++ ) {if(j == 1) dp[i][j] = min(dp[i - 1][j], dp[i - 1][j + 1]) + matrix[i - 1][j - 1];else if(j == n) dp[i][j] = min(dp[i - 1][j], dp[i - 1][j - 1]) + matrix[i - 1][j - 1];else {dp[i][j] = min(dp[i - 1][j], min(dp[i - 1][j - 1], dp[i - 1][j + 1])) + matrix[i - 1][j - 1];}}}int res = 0x3f3f3f3f;for(int i = 1; i <= n; i ++ ) res = min(res, dp[n][i]);return res;}
};
516. 最长回文子序列
给你一个字符串 s
,找出其中最长的回文子序列,并返回该序列的长度。
子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。
数据范围
1 <= s.length <= 1000
s
仅由小写英文字母组成
分析
令 d p [ i ] [ j ] dp[i][j] dp[i][j]表示下标j到i的最长回文子序列长度,状态转移如下
- 若 s [ i ] = = s [ j ] d p [ i ] [ j ] = m a x ( d p [ i ] [ j + 1 ] , m a x ( d p [ i − 1 ] [ j ] , d p [ i − 1 ] [ j + 1 ] + 2 ) ) ,其中 d p [ i ] [ j + 1 ] 表示 j + 1 到 i 的最长子序列, d p [ i − 1 ] [ j + 1 ] + 2 指使用 s [ i ] 和 s [ j ] 作为回文子序列的首尾 若s[i]==s[j] \ dp[i][j]=max(dp[i][j+1],max(dp[i-1][j],dp[i-1][j+1]+2)),其中dp[i][j+1]表示j+1到i的最长子序列,dp[i-1][j+1]+2指使用s[i]和s[j]作为回文子序列的首尾 若s[i]==s[j] dp[i][j]=max(dp[i][j+1],max(dp[i−1][j],dp[i−1][j+1]+2)),其中dp[i][j+1]表示j+1到i的最长子序列,dp[i−1][j+1]+2指使用s[i]和s[j]作为回文子序列的首尾
- 若 s [ i ] ! = s [ j ] d p [ i ] [ j ] = m a x ( d p [ i ] [ j + 1 ] , d p [ i − 1 ] [ j ] ) ,此时无法使用 s [ i ] 和 s [ j ] 作为首尾 若s[i]!=s[j] \ dp[i][j]=max(dp[i][j+1],dp[i-1][j]),此时无法使用s[i]和s[j]作为首尾 若s[i]!=s[j] dp[i][j]=max(dp[i][j+1],dp[i−1][j]),此时无法使用s[i]和s[j]作为首尾
由于 d p [ i ] [ j + 1 ] dp[i][j+1] dp[i][j+1]需要使用上一次的数据,因此这里j需要倒着遍历
代码
class Solution {
public:const static int N = 1005;int dp[N][N];int longestPalindromeSubseq(string s) {int n = s.size();dp[0][0] = 1;for(int i = 0; i < n; i ++ ) dp[i + 1][i + 1] = 1;for(int i = 0; i < n; i ++ ) {for(int j = i - 1; j >= 0 ; j -- ) {dp[i + 1][j + 1] = max(dp[i + 1][j + 2], dp[i][j + 1]);if(s[i] == s[j]) {dp[i + 1][j + 1] = max(dp[i + 1][j + 1], dp[i][j + 2] + 2);} }}int res = 0;for(int i = 1; i <= n; i ++ ) res = max(res, dp[n][i]);return res;}
};
712. 两个字符串的最小ASCII删除和
给定两个字符串s1 和 s2,返回 使两个字符串相等所需删除字符的 ASCII 值的最小和 。
数据范围
0 <= s1.length, s2.length <= 1000
s1
和s2
由小写英文字母组成
分析
令 d p [ i ] [ j ] dp[i][j] dp[i][j]表示 s 1 s1 s1的前 i i i个字符和 s 2 s2 s2的前 j j j个字符变相等所需要删除 a s c l l ascll ascll字符的最小值
状态转移如下:
- 若 s 1 [ i ] = = s 2 [ j ] d p [ i ] [ j ] = m i n ( d p [ i − 1 ] [ j ] + a , m i n ( d p [ i ] [ j − 1 ] + b , d p [ i − 1 ] [ j − 1 ] ) ) ; 若s1[i]==s2[j]\ dp[i][j]=min(dp[i - 1][j] + a, min(dp[i][j - 1] + b, dp[i - 1][j - 1])); 若s1[i]==s2[j] dp[i][j]=min(dp[i−1][j]+a,min(dp[i][j−1]+b,dp[i−1][j−1]));
- 若 s 1 [ i ] ! = s 2 [ j ] d p [ i ] [ j ] = m i n ( d p [ i − 1 ] [ j ] + a , m i n ( d p [ i ] [ j − 1 ] + b , d p [ i − 1 ] [ j − 1 ] + a + b ) ) 若s1[i]!=s2[j]\ dp[i][j] = min(dp[i - 1][j] + a, min(dp[i][j - 1] + b, dp[i - 1][j - 1] + a + b)) 若s1[i]!=s2[j] dp[i][j]=min(dp[i−1][j]+a,min(dp[i][j−1]+b,dp[i−1][j−1]+a+b))
其中 a a a是 s 1 [ i ] s1[i] s1[i]的ascll值,b是 s 2 [ j ] s2[j] s2[j]的ascll值
注意一下初始化, d p [ i ] [ 0 ] dp[i][0] dp[i][0]和 d p [ 0 ] [ j ] dp[0][j] dp[0][j]就是将对应的 s 1 s1 s1的前 i i i个全删除,s2的前 j j j个全删除
代码
class Solution {
public:const static int N = 1005;int dp[N][N];int minimumDeleteSum(string s1, string s2) {int n = s1.size(), m = s2.size();memset(dp, 0x3f, sizeof(dp));dp[0][0] = 0;for(int i = 0; i < n; i ++ ) dp[i + 1][0] = dp[i][0] + (int)s1[i];for(int j = 0; j < m; j ++ ) dp[0][j + 1] = dp[0][j] + (int)s2[j];for(int i = 1; i <= n; i ++ ) {for(int j = 1; j <= m; j ++ ) {int a = (int)s1[i - 1];int b = (int)s2[j - 1];if(s1[i - 1] == s2[j - 1]) dp[i][j] = min(dp[i - 1][j] + a, min(dp[i][j - 1] + b, dp[i - 1][j - 1]));else dp[i][j] = min(dp[i - 1][j] + a, min(dp[i][j - 1] + b, dp[i - 1][j - 1] + a + b));}}return dp[n][m];}
};
相关文章:
力扣9.26
931. 下降路径最小和 给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即…...
HT8731 内置自适应H类升压和防破音功能的10W D类及AB类音频功率放大器
1、特点 防削顶失真功能(防破音,Anti-Clipping Function, ACF) 免滤波器数字调制,直接驱动扬声器 输出功率 10W(VBAT4.2V,RL3Ω,THDN10%, fiN 1kHz) 6W(VBAT3.3~4.2V,RL4Ω,THDN<1%,20-20kHz 全频段) 3W (VBAT3.3~4.2V,RL8Ω, THDN<1%, 20- 20kHz 全频段 VB…...
webpack使用
一、简介 概述 本次使用webpack4进行构建打包 二、webpack 安装webpack、webpack-cli npm install webpack4.2.0 webpack-cli4.2.0 -D 三、loader 加载器概述 raw-loader:加载文件原始内容(utf-8) file-loader:把文件输出…...
高通Android 12 音量API设置相关代码
// 获取当前音量大小public static int getCurrentVolume(Context context) {AudioManager audioManager (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);return audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); // 使用 STREAM_MUSIC 作为示例…...
Qt开发第一讲
一、Qt项目里面有什么? 对各个文件的解释: Empty.pro文件 QT core gui # 要引入的Qt模块,后面学习到一些内容的时候可能会修改这里 #这个文件相当于Linux里面的makefile文件。makefile其实是一个非常古老的技术了。 #qmake搭配.pr…...
详细指南:如何有效解决Windows系统中msvcp140.dll丢失的解决方法
如果你在使用Windows系统时遇到“msvcp140.dll丢失”的错误提示,通常是因为你的计算机上缺少或损坏了msvcp140.dll文件。msvcp140.dll是Microsoft Visual C Redistributable包的一部分,许多应用程序和游戏需要它来正常运行。以下是几种解决msvcp140.dll丢…...
【RabbitMQ】幂等性、顺序性
幂等性 概述 幂等性是数学和计算机科学中某些运算的性质,他们可以被多次应用,而不会改变初始应用的结果。RabbitMQ的幂等性则是指同一条消息,多次消费,对系统的影响是相同的。 一般消息中间件的消息传输保障分为三个层级&#…...
FFmpeg源码:avio_skip函数分析
AVIOContext结构体和其相关的函数分析: FFmpeg源码:avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析 FFmpeg源码:read_packet_wrapper、fill_buffer函数分析 FFmpeg源码:avio_read函数分析 FFmpeg源码ÿ…...
Llama 3.1 技术研究报告-6
6 推理 我们研究了两种主要技术,以使 Llama 3 405B 模型的推理⾼效:(1) 流⽔线并⾏和 (2) FP8 量化。我们已经公开发布了我们的 FP8 量化实现。 6.1 流⽔线并⾏ 当使⽤ BF16 数字表⽰模型参数时,Llama 3 405B 不适合在装有 8 个 Nvidia H1…...
更新日志-Python OS
这么久没更新全是因为这段时间的事情很多,只能一点一点的更新代码,不过好在,也是成功更新出来啦! 更新日志(2024/9/29) 代码全文更新,将所有的绝对路径替换为相对路径,这样在各位大…...
Chrome浏览器的C++内存管理技术揭秘
Chrome浏览器作为全球最流行的网络浏览器之一,其高效的内存管理技术功不可没。本文将深入探讨Chrome浏览器在C中的内存管理技术,并介绍如何通过调整网页加载时间、优化视频播放体验和解决谷歌浏览器占用CPU过高的问题来提升浏览器性能。 (本…...
Redis --- redis事务和分布式事务锁
redis事务基本实现 Redis 可以通过 MULTI,EXEC,DISCARD 和 WATCH 等命令来实现事务(transaction)功能。 > MULTI OK > SET USER "Guide哥" QUEUED > GET USER QUEUED > EXEC 1) OK 2) "Guide哥"使用 MULTI命令后可以输入…...
SQL,将多对多的关联记录按行输出
数据库的Primary表和Secondary表有相同的结构,其中W、H、D是主键。Primary表:NameWHDPrimary item 1100500300Primary item 2100600300Primary item 3200500300Primary item 4100500300Primary item 5100600300Primary item 6200500300 Secondary表&…...
【SQL】筛选字符串与正则表达式
目录 语法 需求 示例 分析 代码 语法 SELECT column1, column2, ... FROM table_name WHERE condition; WHERE 子句用于指定过滤条件,以限制从数据库表中检索的数据。当你执行一个查询时,WHERE 子句允许你筛选出满足特定条件的记录。如果记录满…...
【Redis入门到精通五】Java如何像使用MySQL一样使用Redis(jedis安装及使用)
目录 Jedis 1.jedis是什么 2.jedis的安装配置 3.jedis的基础命令操作展示 1.set和get操作: 2.exists和del操作: 3.keys和type操作: 4. expire和ttl: Jedis Java 操作 redis 的客⼾端有很多,其中最知名的是 jedi…...
【 微信机器人+ AI 搭建】
摘要: 各种大模型已经出来好久了,各类app也已经玩腻了,接下来,就在考虑,怎么让大模型,利益最大化。 本人没有显著的家世,没有富婆包养,只能自己抽点时间,研究下技术&…...
VGG16网络介绍及代码撰写详解(总结1)
可以从本人以前的文章中可以看出作者以前从事的是嵌入式控制方面相关的工作,是一个机器视觉小白,之所以开始入门机器视觉的学习只要是一个idea,想把机器视觉与控制相融合未来做一点小东西。废话不多说开始正题。 摘要:本文是介绍V…...
多个excel表数据比对操作
多个excel表数据比对操作 本文主要使用两种方法进行比对,分别使用了openpyxl第三方库和pandas第三方库进行数据比对 两种方法优缺点: openpyxy: 优点:主要是处理xlsx的文件,里面方法简单,易懂 缺点:当数据量大的时候,速度很慢,之前我一条一条数据拿出来比较,两百多条…...
golang学习笔记32——哪些是用golang实现的热门框架和工具
推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…...
ZYNQ:开发环境搭建
资料下载 http://47.111.11.73/docs/boards/fpga/zdyz_qimxing(V2).html Vivado软件是什么? Vivado软件是Xilinx(赛灵思)公司推出的一款集成设计环境(IDE),主要用于FPGA(现场可编程门阵列&am…...
一步一步丰富生成式语言模型系统
以下是这套生成式语言模型解决任务的流程图概述: #mermaid-svg-sRHDSMUMV1utrg2F {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sRHDSMUMV1utrg2F .error-icon{fill:#552222;}#mermaid-svg-sRHDSMUMV1u…...
Python中元组的常用方法
# 在Python中,元组(tuple)是一种不可变的序列类型,用于存储多个元素。元组的特点包括: # # 不可变性:一旦创建,元组的元素不能改变。这意味着不能添加、删除或修改元组中的元素。 # 可以包含任何…...
新版本Android Studio如何新建Java code工程
新版本Android Studio主推Kotlin,很多同学以为无法新建Java工程了,其实是可以的,如果要新建Java代码的Android工程,在New Project的时候需要选择Empty Views Activity,如图所示,gradle也建议选为build.grad…...
2024年世界职业院校技能大赛:全面升级的国际化职业技能竞赛
近日,中华人民共和国教育部发布了《2024年世界职业院校技能大赛实施方案》,宣布从2024年起将全国职业院校技能大赛升级为世界职业院校技能大赛。这一重大决策不仅标志着我国职业教育竞赛平台的全面国际化,更彰显了中国在全球职业教育领域的引领作用和战略眼光,具体内…...
前端vue相关常见面试题,包含MVVM、双向绑定原理、性能优化、vue2和vue3性能对比等
vue面试题 MVVM 概念 model view viewModel 本质上是mvc(程序分层开发思想) 将viewModel的状态和行为抽象化,viewmodel将视图ui和业务逻辑分开,去除model的数据,同时处理view中需要展示的内容和业务逻辑 view视图层 …...
生信初学者教程(十二):数据汇总
文章目录 介绍加载R包导入数据汇总表格输出结果总结介绍 在本教程中,汇总了三个肝细胞癌(HCC)的转录组数据集,分别是LIRI-JP,LIHC-US/TCGA-LIHC和GSE14520,以及一个HCC的单细胞数据集GSE149614的临床表型信息。这些数据集为科研人员提供了丰富的基因表达数据和相关的临床…...
常用大语言模型简单介绍
LLaMA(Large Language Model Meta AI)和 Qwen是两个不同的大语言模型,它们在开发背景、设计目标和使用场景等方面有所不同。 1. LLaMA: 开发背景: LLaMA 是由Facebook开发的大语言模型,主要针对学术研究和开源领域。它的设计初衷…...
云计算Openstack
OpenStack是一个开源的云计算管理平台项目,由美国国家航空航天局(NASA)和Rackspace公司合作研发并发起,以Apache许可证授权。该项目旨在为公共及私有云的建设与管理提供软件支持,通过一系列相互协作的组件实现云计算服…...
ClickHouse复杂查询单表亿级数据案例(可导出Excel)
通过本篇博客,读者可以了解到如何在 ClickHouse 中高效地创建和管理大规模销售数据。随机数据生成和复杂查询的示例展示了 ClickHouse 的强大性能和灵活性。掌握这些技能后,用户能够更好地进行数据分析和决策支持,提升业务洞察能力。 表结构…...
ST-GCN模型实现花样滑冰动作分类
加入深度实战社区:www.zzgcz.com,免费学习所有深度学习实战项目。 1. 项目简介 本项目实现了A042-ST-GCN模型,用于对花样滑冰动作进行分类。花样滑冰作为一项融合了舞蹈与竞技的运动,其复杂的动作结构和多变的运动轨迹使得动作识别成为一个具…...
bootstrap 设置 wordpress 背景/手机百度app免费下载
中国到底多少个程序员?每年计算机专业毕业的有多少?而这些人中真正从事it行业的比例是多少呢?中国的程序员中的地域分布状况又如何呢?以及程序员使用的编程语言比重等等,这一个个问题似乎都深刻的说明了我们程序猿是一…...
行业网站建设哪家好/百度竞价排名费用
这两年,线上办公逐渐常态化,相信大家对ftp这个概念也比较熟悉了。ftp,即文件传输协议,线上办公就是用ftp软件进行文件传输的。那ftp传输文件大小有限制吗,ftp文件传输工具有哪些我们一起来看看。 一、ftp传输文件大小有限制吗 f…...
简历模板可编辑/苏州整站优化
2019独角兽企业重金招聘Python工程师标准>>> 计算机 》 属性 》 高级系统设置 》 指向你的安装目录 转载于:https://my.oschina.net/u/3608045/blog/1647983...
山东德铭工程建设公司网站/老鬼seo
B. 买酒Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 64 MBTotal Submission: 43 Submission Accepted: 6Description众所周知,西瓜是一个很爱喝酒的人。有一天西瓜和朋友去酒楼喝酒,却发现酒楼在大酬宾,活动规则如下。…...
幼儿园网站建设费用/百度平台订单查询
描述一个业务问题的现状是什么,是最基础的数据分析需求。常见的问题类型有:产品经理:某个功能的数据表现如何?活动运营:某个活动的数据情况怎么样?渠道运营:新渠道的引流人数是多少。新人数据分…...
做有色研究的网站/凡科网免费建站
1. 题目 参考链接: 字节高频题补充——36进制加法 36进制由0-9,a-z,共36个字符表示。 要求按照加法规则计算出任意两个36进制正整数的和,如1b 2x 48 (解释:47105152) 要求:不允许使用先将…...