问题描述
给定三个长度不超过200的整数序列X,Y,Z,求他们的最长公共子序列。序列中的数字均为10000以内的正整数。
例如:下列三个序列的最长公共子序列长度为4,为<1,3,9,15>。
X=<1,3,5,7,9,11,13,15>
Y=<0,1,3,6,9,12,15,18>
Z=<1,2,3,4,9,10,15,20>
输入格式
第一行,三个整数a,b,c分别代表x,y,z三个序列的长度
第二行,a个空格间隔的整数,表示x序列
第二行,b个空格间隔的整数,表示y序列
第二行,c个空格间隔的整数,表示z序列
输出格式
一个整数,表示所求答案
样例输入
8 8 8
1 3 5 7 9 11 13 15
0 1 3 6 9 12 15 18
1 2 3 4 9 10 15 20
样例输出
4
/*
状态:
f[i][j][k]表示x数组的前i个与y数组的前j个与z数组的前k个中最长公共子序列的长度
方程:1.当x[i] == y[j] == z[k]:
f[i][j][k] = f[i - 1][j - 1][k - 1] + 1
(f[i - 1][j - 1]表示x数组的前i - 1个与y - 1数组的前j个中,z数组的前k - 1个最长公共子序列的长度
再加当前相同的x[i]与y[j]与z[k]