leetcode 115. 不同的子序列

2023.8.25

使用dp数组解决。 定义一个二维dp数组,dp[i][j]的含义为:字符串s(下标为i-1)中,子序列t(下标为j-1)出现的个数。

当字符串s[i-1]和t[j-1]相同时,递推公式为:dp[i][j] = dp[i-1][j-1] + dp[i][j-1]; 不相同时,dp[i][j] = dp[i][j-1];

初始化需要将第一行全初始化为1。 下面看代码:

cpp 复制代码
class Solution {
public:
    int numDistinct(string s, string t) {
        vector<vector<uint64_t>> dp(t.size()+1,vector<uint64_t>(s.size()+1,0));
        //初始化第一行
        for(int i=0; i<=s.size(); i++) dp[0][i] = 1;
        for(int i=1; i<=t.size(); i++)
        {
            for(int j=1; j<=s.size(); j++)
            {
                if(t[i-1] == s[j-1]) dp[i][j] = dp[i-1][j-1] + dp[i][j-1];
                else dp[i][j] = dp[i][j-1];
            }
        }
        return dp[t.size()][s.size()];
    }
};
相关推荐
MediaTea3 小时前
AI 术语通俗词典:C4.5 算法
人工智能·算法
Navigator_Z3 小时前
LeetCode //C - 1033. Moving Stones Until Consecutive
c语言·算法·leetcode
WBluuue3 小时前
数据结构与算法:莫队(一):普通莫队与带修莫队
c++·算法
风筝在晴天搁浅3 小时前
n个六面的骰子,扔一次之后和为k的概率是多少?
算法
MATLAB代码顾问5 小时前
Python实现蜂群算法优化TSP问题
开发语言·python·算法
代码飞天5 小时前
机器学习算法和函数整理——助力快速查阅
人工智能·算法·机器学习
jiushiapwojdap5 小时前
LU分解法求解线性方程组Matlab实现
数据结构·其他·算法·matlab
笨笨饿5 小时前
69_如何给自己手搓一个串口
linux·c语言·网络·单片机·嵌入式硬件·算法·个人开发
纽扣6676 小时前
【算法进阶之路】链表进阶:删除、合并、回文与排序全解析
数据结构·算法·链表
消失的旧时光-19436 小时前
统一并发模型:线程、Reactor、协程本质是一件事(从线程到协程 · 第6篇·终章)
java·python·算法