首页 > 其他 > 详细

动态规划——1143. 最长公共子序列

时间:2021-05-03 14:55:34      阅读:15      评论:0      收藏:0      [点我收藏+]

动态规划——1143. 最长公共子序列

题目:

技术分享图片

思路:

  1. dp数组的定义:二维dp数组,dp[i] [j]代表在text1[0, ... , i-1]和text2[0, ... , j-1]时,两个字符串的最长公共子序列的长度。

  2. base_case:dp[0] [j] = dp[i] [0] =0

  3. 状态转移方程:

    技术分享图片

代码:

class Solution {
public:
    int longestCommonSubsequence(string text1, string text2) {
        int m = text1.size() + 1;
        int n = text2.size() + 1;
        int a[m][n];
        for(int i=0; i<m ; i++){
            a[i][0]=0;
        }
        for(int j=1; j<n ; j++){
            a[0][j] = 0;
        }
        for(int i=1; i<m ; i++){
            for(int j=1; j<n ; j++){
                if(text1[i-1] == text2[j-1]){
                    a[i][j] = a[i-1][j-1] + 1;
                }
                else{
                    a[i][j] = max(a[i-1][j],a[i][j-1]);
                }
            }
        }
        return a[m-1][n-1];
    }
};

Rank:

技术分享图片

Tips:

动态规划——1143. 最长公共子序列

原文:https://www.cnblogs.com/lzyrookie/p/14727122.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!