当前位置: 首页 > article >正文

代码随想录算法训练营 ---第五十五天

今天是 动态规划:编辑距离问题。

第一题:

简介:

动态规划五部曲:

1.确定dp数组的含义

dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]

2.确定递推公式

  两种情况:

 1.s[i-1] == t[j-1]

dp[i][j]  = dp[i-1][j-1]+1

 2.s[i-1] != t[j-1]

  不相等所以我们要模拟删除此元素,相当于长度不变继承前面的长度  或理解为此元素已删除当前元素为上一个元素  

dp[i][j] = dp[i][j - 1]

3.确定数组的初始化

初始化为零

4.确定数组的遍历顺序

5.打印数组

代码实现:

    bool isSubsequence(string s, string t) {
        vector<vector<int>> dp(s.size() + 1, vector<int>(t.size() + 1, 0));
        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] + 1;
                else dp[i][j] = dp[i][j - 1];
            }
        }
        if (dp[s.size()][t.size()] == s.size()) return true;
        return false;
    }

第二题:


简介:

这里把代码随想路的链接给大家贴出来,因为本人理解也不是很透彻。等透彻了在进行更改

代码实现: 

  int numDistinct(string s, string t) {
        vector<vector<uint64_t>> dp(s.size() + 1, vector<uint64_t>(t.size() + 1));
        for (int i = 0; i < s.size(); i++) dp[i][0] = 1;
        for (int j = 1; j < t.size(); j++) dp[0][j] = 0;
        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];
                } else {
                    dp[i][j] = dp[i - 1][j];
                }
            }
        }
        return dp[s.size()][t.size()];
    }

总结:

对我来说,有点困难! 要多做几遍,理解一下!继续加油!


http://www.kler.cn/a/158684.html

相关文章:

  • 机器学习(贝叶斯算法,决策树)
  • 解决Spring Boot整合Redis时的连接问题
  • 多线程4:线程池、并发、并行、综合案例-抢红包游戏
  • python高级之简单爬虫实现
  • Linux Kernel Programming 2
  • 一文速学---红黑树
  • unity 2d入门飞翔小鸟按钮点击功能且场景切换(二)
  • QT中的 容器(container)-大全
  • 基于SpringBoot的校园互助网站
  • Understanding Computer Hardware
  • 【已验证】SqlBulkCopy 执行批量插入的时候报超时问题-解决办法
  • 开源众筹平台系统源码/高仿某滴筹平台源码/PHP源码/互助众筹系统网站源码
  • SQL Server的安装和首个库的创建
  • 利用jQuery实现AJAX定时刷新局部页面实例
  • 1_控制系统总体结构
  • TCP首部格式_基本知识
  • JVM执行引擎
  • (C语言)通过循环按行顺序为一个矩阵赋予1,3,5,7,9,等奇数,然后输出矩阵左下角的值。
  • L1-009:N个数求和
  • [LeetCode系列] 30天pandas挑战
  • Hadoop的介绍与安装
  • nodejs+vue+ElementUi爱宠养护交流平台设计与实现vwq50
  • 【SpringCloud】设计原则之前后端分离与版本控制
  • 【聚类】K-modes和K-prototypes——适合离散数据的聚类方法
  • 使用极限网关助力 ES 集群无缝升级、迁移上/下云
  • TensorRT_Win10上WSL实践篇