举个例子来说:char a[]="abcd", b[]="acd";
dp[][]用来储存公共子序列的长度;
如图所示:
a[0] | a[1] | a[2] | a[3] | 4 | |
b[0] | 0 | 0 | 0 | 0 | 0 |
b[1] | 0 | 1 | 1 | 1 | 1 |
b[2] | 0 | 1 | 1 | 2 | 2 |
3 | 0 | 1 | 1 | 2 | 3 |
动态转移方程:
dp[i,j] = max (dp[ i-1 , j-1 ]+ same(i,j), dp[ i-1 ][ j ] , dp[ i ][ j-1 ]);same( i, j ,)中i,j 相同返回1 ,否则返回0;
具体代码: