Uva - 10405 - Longest Common Subsequence
2013-03-16 09:30
357 查看
题意:求最长公共子串的长度。
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=114&problem=1346
——>>题意简单,设d[i][j]表示前i个a和前j个b的最长公共子串的长度,
当a[i] == b[j]时,d[i][j] = d[i-1][j-1];
否则d[i][j] = max(d[i-1][j], d[i][j-1]);
不过有小陷阱:测试数据中有空格字符存在,用scanf("%s", &)就WA!!!
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=114&problem=1346
——>>题意简单,设d[i][j]表示前i个a和前j个b的最长公共子串的长度,
当a[i] == b[j]时,d[i][j] = d[i-1][j-1];
否则d[i][j] = max(d[i-1][j], d[i][j-1]);
不过有小陷阱:测试数据中有空格字符存在,用scanf("%s", &)就WA!!!
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 1000 + 10; int d[maxn][maxn]; int main() { char a[maxn], b[maxn]; while(gets(a+1) && gets(b+1)) //测试数据中有空格字符,用scanf("%s", &)WA!!! { int len_a = strlen(a+1), len_b = strlen(b+1), i, j; memset(d, 0, sizeof(d)); for(i = 1; i <= len_a; i++) for(j = 1; j <= len_b; j++) if(a[i] == b[j]) d[i][j] = d[i-1][j-1] + 1; else d[i][j] = max(d[i-1][j], d[i][j-1]); printf("%d\n", d[len_a][len_b]); } return 0; }另外发现,若令len_a = strlen(a), len_b = strlen(b);下面的跳出条件为<len_a,<len_b,最后输出d[len_a-1][len_b-1]时,会WA!!!
相关文章推荐
- UVa 10405 - Longest Common Subsequence
- UVA 10405 Longest Common Subsequence
- uva10405 - Longest Common Subsequence(LCS,最长公共子序列)
- uva 10405 - Longest Common Subsequence(注意空格陷阱)
- uva 10405 Longest Common Subsequence
- Uva 10405-Longest Common Subsequence(DP)
- UVa 10405 - Longest Common Subsequence
- 数组字符串uva 10405 - Longest Common Subsequence(最长公共子序列)
- uva 10405 Longest Common Subsequence
- UVA 10405 - Longest Common Subsequence
- UVA 10405 Longest Common Subsequence
- UVA - 10405 Longest Common Subsequence
- UVa 10405: Longest Common Subsequence
- UVa 10405 - Longest Common Subsequence
- UVA - 10405 Longest Common Subsequence (LCS最长公共子序列)
- Uva 10405—Longest Common Subsequence
- uva 10405 Longest Common Subsequence (最长公共子序列)
- UVA 10405 Longest Common Subsequence
- Longest Common Subsequence - UVa 10405 最长公共子序列(数据有坑)
- UVa 10405 & POJ 1458 Longest Common Subsequence