题目地址:
http://noi.openjudge.cn/ch0206/1808/
题目:
求两个字符串的最长公共子序列长度
思路:
采用动态规划的方法,用二维数组C[][]来保存子问题(C[i][j]存储子序列长度为i的L1[0...i-1],长度为j的L2[0...j-1]的LCS长度),然后两层循环自底向上不断更新C,直至找到C[L1.size()][L2.size()],即找到我们的解。
更新方法:
#include "iostream"
#include "vector"
using namespace std;
#define L1LENGTH 201
#define L2LENGTH 201
/*
* C[i][j]存储子序列长度为i的L1[0...i-1],长度为j的L2[0...j-1]的LCS长度
* 0 j=0||i=0
* C[i][j] = C[i-1][j-1]+1 Xi = Yi
* max(C[i-1][j],C[i][j-1]) Xi != Yi
*/
int C[L1LENGTH][L2LENGTH];
//int B[L1LENGTH][L2LENGTH];
void LCSLength(string X,string Y,in