洛谷P2543 - 奇怪的字符串 - LCS

奇怪的字符串

 

 

输入格式

输入文件中包含两个字符串X和Y。当中两字符串非0即1。序列长度均小于9999。

输出格式

X和Y的最长公共子序列长度。

 

思路:
最长公共子序列:LCS
为了防止内存溢出,可以使用滚动数组

 

package dp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

/**
 * 最长公共子序列:LCS
 * 注:为了防止内存溢出,可以使用滚动数组
 * @author XA-GDD
 *
 */
public class P2543_StrangeString {

	static char [] ch1;
	static char [] ch2;
	static int [][] dp;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
    	String str1 = st.nextToken();
    	String str2 = st.nextToken();
    	ch1 =str1.toCharArray();
    	ch2 =str2.toCharArray(); 
    	dp = new int[2][Math.max(ch1.length,ch2.length)+1];
    	for(int i=1;i<=ch1.length;i++) {
    		for(int j=1;j<=ch2.length;j++) {
    			if(ch1[i-1]==ch2[j-1]) {
    				dp[i%2][j] = dp[(i-1)%2][j-1]+1;
    			}else {
    				dp[i%2][j] = Math.max(dp[(i-1)%2][j], dp[i%2][j-1]);
    			}
    		}
    	}
    	System.out.println(dp[ch1.length%2][ch2.length]);
 
	}

}

  

 

posted @ 2022-01-20 21:16  晓暮云  阅读(64)  评论(0编辑  收藏  举报