一:题目

二:代码

class Solution {public:/**思路:动规分析走一波1>:确定dp数组以及下标的含义dp[i][j] 表示的是 以下标i-1结尾的子序列s中出现以j-1结尾的子序列t的 个数2>:确定dp数组的状态递推公式这里考虑两种状况 一种就是 s[i-1] == s[j-1] 一种就是字符串不相等;当字符串相等的时候也有两种情况一种是算上  s[i-1]字符进行匹配 即 dp[i][j] = dp[i-1][j-1];//这里我们是前面s中包含t的个数一种是不算上 s[i-1]字符进行匹配 即 dp[i][j] = dp[i-1][j];//这个就是不包含s[i-1]字符那么我们总的个数 dp[i][j] = dp[i-1][j-1] + dp[i-1][j];bagg  和bag   s[i-1] = s[3] = g;那么我们计算个数的时候 一种就是 不算上s[3] 一种就是算上是s[3]但是无论哪种  我们都需要注意的是  我们最终dp[i][j]统计的是s包含t的个数所以 dp[i][j] = dp[i-1][j-1] + dp[i-1][j];当字符串不相等的时候  也就是不用匹配s[i-1] 那就匹配s[i-1]之前的字符也就是  dp[i][j] = dp[i-1][j];3>:确定dp数组的初始化当s字符串和空字符串进行匹配的时候;我们便可以得出  dp[i][0] = 1;因为不论i为何值  反正其肯定会包含空字符串;4>:确定dp数组的遍历顺序这里外层循环是s内层循环是t5>:举例验证s = "babgbag" t = "bag"b a g1 0 0 0b 1 1 0 0a 1 1 1 0  b 1 2 1 0g 1 2 1 1  b 1 3 1 1a 1 3 4 1g 1 3 4 5**/int numDistinct(string s, string t) {//uint:取值范围是 2^31 - 1,即:0~4294967295。这里表示的范围不同  如果用int  会报错        vector<vector<uint64_t> > dp(s.size()+1,vector<uint64_t>(t.size()+1,0));for (int i = 0; i <= s.size(); i++) dp[i][0] = 1;for (int i = 1; i <= s.size(); i++) {for (int j = 1; j <= t.size(); j++) {if (s[i-1] == t[j-1]) dp[i][j] = dp[i-1][j-1] + dp[i-1][j];//dp[i][j]//=算上s[i-1]字符+不算s[i-1]字符else dp[i][j] = dp[i-1][j];//}}return dp[s.size()][t.size()];}
};


这种一做就两个钟的题啥时候是个头呀 动态规划把我整异域了

leetcode115. 不同的子序列相关推荐

  1. leetcode115 不同的子序列

    给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数. 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串.(例如," ...

  2. 【大总结3】leetcode解题总览(算法、剑指offer、SQL、多线程、shell)

    3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来.关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可. 我这 ...

  3. LeetCode算法题整理(200题左右)

    目录 前言 一.树(17) 1.1.后序遍历 1.2.层次遍历 1.3.中序 1.4.前序 二.回溯(20) 2.1.普通回溯 2.2.线性回溯:组合.排列.子集.分割 2.3.矩阵回溯 三.二分查找 ...

  4. leetcode解题总览

    3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来.关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可. 我这 ...

  5. 【代码随想录】-动态规划专题

    文章目录 理论基础 斐波拉契数列 爬楼梯 使用最小花费爬楼梯 不同路径 不同路径 II 整数拆分 不同的二叉搜索树 背包问题--理论基础 01背包 二维dp数组01背包 一维数组(滚动数组) 装满背包 ...

  6. Leetcode动态规划专题(共38道)

    某一问题有很多重叠子问题 每一状态一定由上一状态推导出来 而贪心没有状态推导,而是直接选局部最优 解决方式: 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历 ...

  7. 【精品计划1】动态规划入门到熟悉,看不懂来打我啊

    持续更新...... 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上,斐波纳 ...

  8. 动态规划入门到熟悉,看不懂来打我啊

    动态规划入门到熟悉,看不懂来打我啊 兔子hebtu666 本文链接:https://blog.csdn.net/hebtu666/article/details/100585136 2.1斐波那契系列 ...

  9. LeetCode简单题之最长和谐子序列

    题目 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 . 现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度. 数组的子序列是一个由数组派生出来的 ...

最新文章

  1. flexbox布局的兼容性
  2. MFC中的MainFrame Dlg,App,Doc,View的关系
  3. 初学python还是swift-Python并不完美,Swift正在成长为深度学习语言 !
  4. T-SQL Recipes之Customized Database Objects
  5. python 批量修改密码
  6. Linux命令大总结(早期学习时的笔记)
  7. scrapyd部署_第八章 第一节 scrapyd和scrapy-client
  8. linux客户端 存活检测,Linux下客户端检测服务器的 heartbeat
  9. loss函数之TripletMarginLoss与TripletMarginWithDistanceLoss
  10. 7、sudo权限问题考察一题(考试题答案系列)
  11. 访问艺术馆(codevs 1163)树形DP
  12. Ubuntu如何修改用户密码
  13. opencv之图像二值化处理
  14. AcWing 723. PUM
  15. 区块链为什么叫区块链
  16. 《Modelica教程》by Fritzson 导言部分
  17. JeecgBoot 3.2.0 版本发布,基于代码生成器的企业级低代码平台
  18. excel计算式自动计算_计算macd 分解步骤一步一步详细计算macd 用excel计算macd
  19. windows10升级windows11后微信等软件无法连接网络
  20. GT性能测试Android版使用说明

热门文章

  1. 【ArcGIS微课1000例】0014:ArcGIS中如何将kml(kmz)文件转shp,并进行投影转换?
  2. 【ArcGIS微课1000例】0005:空间连接(Spatial Join)
  3. 【ArcGIS风暴】ArcGIS生成GlobeLand30土地利用数据集中国区域行列号shp格式对照图(附shp下载)
  4. 【MATLAB统计分析与应用100例】案例007:matlab数据的极差归一化变换
  5. C语言试题四十三之求出ss所指字符串中指定字符的个数,并返回此值。
  6. Android之Debug运行项目一直卡在Debug界面(can‘t bind to local 8066 for debug)
  7. Android之运行的错误:java.lang.UnsatisfiedLinkError: Couldn‘t find cibloger.so
  8. Android之用Intent.FLAG_ACTIVITY_CLEAR_TOP解决界面重复拉起问题
  9. jmeter对乱码如何处理_JMeter读取 Excel 表中用例数据实现接口压测
  10. 【COMA】一种将团队回报拆分为独立回报的多智能体算法