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()];
    }
};
相关推荐
睡醒了叭5 分钟前
图像分割-传统算法-区域分割
图像处理·人工智能·算法·计算机视觉
代码游侠21 分钟前
复习——网络基础知识
网络·笔记·网络协议·算法·http
沈阳信息学奥赛培训31 分钟前
CCF GESP 2025/12/24 模拟测试 C++ 4级 编程题2
数据结构·算法
dddddppppp12331 分钟前
c 模拟一个fat16文件系统
c语言·c++·算法
行走的bug...1 小时前
利用计算机辅助数学运算
人工智能·算法·机器学习
CoderCodingNo1 小时前
【GESP】C++五级真题(数论-素数、贪心思想考点) luogu-B4050 [GESP202409 五级] 挑战怪物
开发语言·c++·算法
小O的算法实验室1 小时前
2026年AEI SCI1区TOP,基于多策略集成粒子群算法+无人机平滑覆盖路径规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
hope_wisdom1 小时前
C/C++数据结构之队列基础
c语言·数据结构·c++·队列·queue
不一样的故事1262 小时前
高速采集箱
算法·信号处理
会员果汁2 小时前
算法-拓扑排序-C
c语言·开发语言·算法