| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 算法day55|392,115 -> 正文阅读 |
|
[数据结构与算法]算法day55|392,115 |
392.判断子序列
dp数组的含义dp[i][j] i-1的字符串s的子序列。j-1的字符串t的子序列。dp[i][j]代表相同子序列的长度。 递归公式 分两种情况:当s[i-1] == t[j-1]的时候,dp[i-1][j-1]前面的长度的集合+1 当s[i-1] != t[j-1]的时候,删除t,那么剩下的就是s-1和t-2 开始比较,dp= dp[i][j-1] 初始化 初始化为0,因为有可能没有相同子序列。 如果最后的长度与s字符串的相等的话,说明是true 115.不同的子序列dp数组的定义 这个dp数组的定义都很难。 dp[i][j]是以i-1为结尾的s子序列中出现以j-1为结尾为1的t的个数为dp[i][j] 就是说,假设s 中"b"匹配t中的“b",看有多少个。 递归公式 如果s[i-1]和t[j-1]相等, 可以由两个部分组成,第一个部分是使用s[i-1]来匹配。 dp[i][j] = dp[i-1][j-1] 为什么不是不用加一呢?????不是又匹配上了吗? 第二个是不使用s[i-1]来匹配。dp[i-1][j]跳了下一个匹配。 s[i-1]和t[j-1]不相等: 只能跳下一个匹配 所以还是dp[i][j] = dp[i-1][j] 初始化 dp[i][0]代表用空来匹配s,所以都为1. dp[0][j]代表t匹配空,所以都是为0 dp[0][0],空配空,所以为1
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/26 19:54:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |