POJ 1458 Common Subsequence 最长公共子序列(LCS)
来源:互联网 发布:电视盒子软件2017 编辑:程序博客网 时间:2024/05/21 06:22
题意:给出两个字符串,求出最长的公共子序列的长度
Q:什么是公共子序列?
A:子序列中的每个字符都能在两个原串中找到,而且每个字符的先后顺序和原串中的先后顺序一致。
LCS 算法轨迹图
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.util.Scanner;public class Main { /** * Q: 为什么这个数组每次使用都不需要清空? * A: 因为数组最上边的一行全部为 0 && 最左边的一列也全部为 0 , * 而后续的值都是根据这一行一列来定值的。 */ private static int[][] maxLen = new int[1000][1000]; private static int work(String str, String str2) { char[] ch = str.toCharArray(); char[] ch2 = str2.toCharArray(); int length = ch.length; int length2 = ch2.length; for (int i = 1; i <= length; i++) { for (int j = 1; j <= length2; j++) { if (ch[i - 1] == ch2[j - 1]) { maxLen[i][j] = maxLen[i - 1][j - 1] + 1; } else { maxLen[i][j] = Math.max(maxLen[i][j - 1], maxLen[i - 1][j]); } } } return maxLen[length][length2]; } public static void main(String[] args) { Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in))); PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out))); String inputStr; String inputStr2; while (in.hasNext()) { inputStr = in.next(); inputStr2 = in.next(); out.println(work(inputStr, inputStr2)); } out.flush(); }}
阅读全文
0 0
- POJ 1458 Common Subsequence 最长公共子序列(LCS)
- 最长公共子序列(LCS, Longest Common Subsequence), POJ 1458
- POJ 1458 Common Subsequence(最长公共子序列LCS)
- poj 1458 Common Subsequence (LCS(最长公共子序列))
- poj-1458-Common Subsequence-lcs-最长公共子序列-java
- HDOJ 1159(POJ 1458)Common Subsequence (最长公共子序列 LCS)
- HDU/HDOJ 1159/POJ 1458 Common Subsequence(最长公共子序列LCS,滚动数组)
- PKU-1458 Common Subsequence (最长公共子序列LCS)
- 最长公共子序列(Longest Common Subsequence LCS)
- 最长公共子序列(Longest-Common-Subsequence,LCS)
- uva10405 - Longest Common Subsequence(LCS,最长公共子序列)
- HD1159 Common Subsequence 最长公共子序列(LCS)
- poj1458-Common Subsequence(最长公共子序列,LCS)
- 最长公共子序列LCS(The longest common subsequence)
- Common Subsequence(LCS最长公共子序列)
- 最长公共子序列问题(LCS) Longest common subsequence
- HDU1159 Common Subsequence(最长公共子序列LCS)
- 最长公共子序列问题(Longest common subsequence,LCS)
- 执行计划的access和filter的区别
- Fiori2.0学习笔记-splitApp
- 【Scikit-Learn 中文文档】最近邻
- TensorFlow 人脸识别网络与对抗网络搭建
- 开源免费!你不会想错过的业内最好的 API 接口管理平台----eoLinker
- POJ 1458 Common Subsequence 最长公共子序列(LCS)
- Linux关闭 开启防火墙
- 超级牛逼的代码注释
- js基本知识点总结-----js函数基础
- dp题目
- Kosaraju算法
- conda更换国内下载镜像
- leetcode 86. Partition List
- 用Python建立最简单的web服务器