所有最长公共子序列(LCS)——动态规划——Java
公共子序列(LCS)是基础动态规划问题,网上对其介绍很多。今天讨论一个最长公共子序列变种问题——输出《所有》 最长公共子序列。
我们知道最长公共子序列不止一个,如何输出所有最长公共子序列呢?
Answer:只需在动态规划中多记录一个状态即可
代码如下:点击下载
package basic.dp;
/**
* 动态规划,找出《所有》最长公共子序列
*
* @description LongestCommonSubSequence.java
* @author Administrator
* @date 2018/04/17
* @version
*/
public class LongestCommonSubSequence {
/**
* getLCS TODO :得到最长子序列长度,并输出所有最长子序列
*
* @param x
* 序列x
* @param y
* 序列y
* @return 最长子序列长度
* @author zhiman
* @date 2018/04/17 下午9:24:18
*/
private static int getLCS(String x, String y) {
int xlen = x.length();
int ylen = y.length();
// 此处的棋盘长度要比字符串长度多加1,需要多存储一行0和一列0
int</