最大公共子序列

典型的动态规划问题

首先找到递推式

最大公共子序列_第1张图片
image

有了递推式,然后进行初始化

最大公共子序列_第2张图片
image

数组的最后一个元素的值就为最大公共子序列的长度,具体代码如下

public static void main(String[] args) {
    // TODO Auto-generated method stub
    
    String s1 = "asd";
    String s2 = "sd";
    
    showStr(getLong(s1,s2),s1, s2,s1.length(),s2.length());
    
}


public static int[][] getLong(String s1,String s2) {
    char[] str1 = s1.toCharArray();
    char[] str2 = s2.toCharArray();
    
    int[][] dp = new int[s1.length()+1][s2.length()+1];
    //初始化DP数组
    for(int x=0;x= dp[i][j]) {  
        showStr(dp, s1, s2, i - 1, j);  
    } else {  
        showStr(dp, s1, s2, i, j - 1);  
    } 
}

你可能感兴趣的:(最大公共子序列)