分析:
本题和最长公共子序列是相识的。关键是dp数组的定义,直接定义dp[2500][2500]
在网上查了一下。优化了下代码。
跑时156 AC代码如下:
View Code
#include#include #include #define MAXN 2500int dp[2][MAXN];int main(){ int n, len1, len2, i, j, now, pre; char s1[MAXN], s2[MAXN], s[MAXN]; int point[30]; while(scanf("%d", &n) == 1){ scanf("%s", s); for(i=0; i dp[now][j-1] ? dp[pre][j] : dp[now][j-1]; } } } printf("%d\n", dp[len1%2][len2]); } return 0;}