动态规划算法-两个数组的dp(含字符串数组):43.不同的子序列

题目链接:115. 不同的子序列(困难)

算法原理:

解法:动态规划

Java代码:

java 复制代码
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 王洋
 * Date: 2025-10-26
 * Time: 21:33
 */
class Solution {
    //115. 不同的子序列
    //看完算法原理后自己写了一遍,主要就是在行和列上与s和t的一一对应关系上出了点差错,导致一直不通过
    //跟吴小哲写的一样
    public int numDistinct(String s, String t) {
        int m=t.length(),n=s.length();
        int[][] dp=new int[m+1][n+1];
        //初始化
        for(int j=0;j<=n;j++) dp[0][j]=1;
        s=" "+s;t=" "+t;
        for(int i=1;i<=m;i++){
            for(int j=1;j<=n;j++){
                dp[i][j]+=dp[i][j-1];
                if(t.charAt(i)==s.charAt(j))
                    dp[i][j]+=dp[i-1][j-1];
            }
        }
        return dp[m][n];
    }
}
相关推荐
许彰午4 分钟前
22-DataCenter报文序列化
java·低代码·架构·状态模式
2601_9620652519 分钟前
[MySQL] SQL优化之性能分析
java·sql·mysql
小范同学_33 分钟前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
晊晌_h1 小时前
嵌入式从0到精通——数据结构总结[特殊字符]
数据结构·算法·排序算法
我找到地球的支点啦1 小时前
Matlab系列(009) 一CRC循环冗余校验详解
开发语言·数据结构·算法·matlab·信息与通信
予昊1 小时前
从零实现“在线五子棋对战“:WebSocket 实时通信 + 段位匹配
java·开发语言·网络·websocket
2601_962203512 小时前
【SpringAI入门】初识SpringAI
java
罗西的思考2 小时前
【OpenClaw具身硬件】ZeroClaw 源码阅读笔记(3)--- RAG
人工智能·算法·机器学习
weixin_461408582 小时前
Mybatis-flex小记
java·开发语言·mybatis
2601_962177132 小时前
【MySQL篇】聚合查询,联合查询
android·java·mysql