poj1458-Common Subsequence(最长公共子序列)

来源:互联网 发布:ant 调用java代码 编辑:程序博客网 时间:2024/06/06 20:17
#include <iostream>#include <cstring>#include <algorithm>using namespace std;char str1[1050], str2[1050];int f[1050][1050];struct poj1458 {/*[问题描述]:求连个序列的最长公共子序列的长度*//*[解题思路]:f[i][j]表示序列str1[1,...i]与序列str2[1,...j]的最长公共子序列的长度,* 则f[i][j]的值可以通过比较两个序列的最后一个元素得到*/void work() {while (cin >> str1 + 1 >> str2 + 1) {int l1 = strlen(str1 + 1);int l2 = strlen(str2 + 1);for (int i = 0; i <= l1; i++) {for (int j = 0; j <= l2; j++) {if (i != 0 && j != 0) {if (str1[i] == str2[j])f[i][j] = f[i - 1][j - 1] + 1;elsef[i][j] = max(f[i - 1][j], f[i][j - 1]);}elsef[i][j] = 0;}}cout << f[l1][l2] << endl;}}};int main(){poj1458 solution;solution.work();return 0;}

0 0