标签:des c style class blog code
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 36542 | Accepted: 14596 |
Description
Input
Output
Sample Input
abcfbc abfcab programming contest abcd mnp
Sample Output
4 2 0
入门dp,状态转移方程: if(a[j] == b[i]) dp[i][j] = dp[i-1][j-1] + 1;
else dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
就是说如果a[j]=b[i],那么lcs就在前面状态的基础上加一,如果不成立,可以从两个方向考虑lcs,不解释~~~
AC代码如下:
1 #include <cstdio> 2 #include <string.h> 3 #include <iostream> 4 5 using namespace std; 6 7 char a[1000]; 8 char b[1000]; 9 int dp[1000][1000]; 10 11 int main() 12 { 13 int m, n; 14 while(scanf("%s%s", a, b) != EOF) { 15 m = strlen(a); 16 n = strlen(b); 17 for(int i = 1; i <= m; i++) { 18 for(int j = 1; j <=n+1; j++) { 19 if(b[j-1] == a[i-1]) 20 dp[i][j] = dp[i-1][j-1] + 1; 21 else 22 dp[i][j] = max(dp[i-1][j], dp[i][j-1]); 23 } 24 } 25 printf("%d\n", dp[m][n]); 26 } 27 return 0; 28 }
标签:des c style class blog code
原文地址:http://www.cnblogs.com/oracle-dba/p/3763321.html