洛谷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]);
}
}
浙公网安备 33010602011771号