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()];
    }
};
相关推荐
Frostnova丶2 分钟前
LeetCode 1022. 从根到叶的二进制数之和
算法·leetcode
不会敲代码16 分钟前
别再背柯里化面试题了,看完这篇你自己也会写
javascript·算法·面试
snowfoootball7 分钟前
优先队列/堆 题目讲解
学习·算法
SamtecChina20238 分钟前
Samtec连接器设计研究 | 载流量:温升为什么重要?
大数据·网络·人工智能·算法·计算机外设
程序员南飞14 分钟前
排序算法举例
java·开发语言·数据结构·python·算法·排序算法
adore.96818 分钟前
2.24 oj95 96 97
开发语言·c++·算法
白中白1213820 分钟前
算法题-16
算法
梦帮科技22 分钟前
【DREAMVFIA开源】量子互联网协议:节点通信与路由算法
人工智能·神经网络·算法·生成对抗网络·开源·量子计算
菜鸡儿齐27 分钟前
leetcode-搜索插入位置
数据结构·算法·leetcode
52Hz11828 分钟前
力扣394.字符串解码、739.每日温度、84.柱状图中最大的矩形
python·算法·leetcode