51nod1006的ac代码,我下面的代码有啥问题?
`#include<stdio.h>
include<string.h>
define N 1001
char str1[N];
char str2[N];
char str[N];
int dpN;
int max(int a, int b) {
return a > b ? a : b;
}
int main() {
int i, j, len1, len2;
scanf("%s %s", str1+1, str2+1);
memset(dp, 0, sizeof(dp));
len1 = strlen(str1+1);
len2 = strlen(str2+1);
for(i = 1; i <= len1; i++) {
for (j = 1; j <= len2; j++) {
if (str1[i] == str2[j])
dp[i][j] = dp[i-1][j-1] + 1;
else dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
}
int k = len1, m = len2, num = 0;
while (k&&m) {
if (str1[k] == str2[m]) {
str[num] = str[k];
num++;
k--;
m--;
} else if (dp[k][m] == dp[k-1][m]) {
k--;
} else if (dp[k][m] == dp[k][m-1]) {
m--;
}
}
for(int q = num-1; q >= 0; q--) {
printf("%c", str[q]);
}
printf("\n");
return 0;
}
`
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论