zoukankan      html  css  js  c++  java
  • POJ 1458 Common Subsequence

    题意:LCS……最长公共子序列……不想解释了

    解法:这题只需要求长度,所以显而易见(对没错我就是来装×的),方程为dp[i][j] = {dp[i - 1][j - 1] + 1(s1[i] == s2[i]), max(dp[i - 1][j], dp[i][j - 1])}。

    好吧还是解释一下……dp[i][j]表示两个字符串分别以第i个元素和第j个元素结尾时的LCM长度,如果第一个字符串的第i个字符和第二个字符串的第j个字符相等,那么dp[i][j]由dp[i - 1][j - 1]转移而来,否则dp[i][j]为dp[i][j - 1]和dp[i - 1][j]的最大值。

    代码:

    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<string.h>
    #include<math.h>
    #include<limits.h>
    #include<time.h>
    #include<stdlib.h>
    #include<map>
    #include<queue>
    #include<set>
    #include<stack>
    #include<vector>
    #define LL long long
    using namespace std;
    int dp[1005][1005];
    int main()
    {
        string s1, s2;
        while(cin >> s1 >> s2)
        {
            memset(dp, 0, sizeof dp);
            for(int i = 1; i <= s1.size(); i++)
            {
                for(int j = 1; j <= s2.size(); j++)
                {
                    if(s1[i - 1] == s2[j - 1])
                        dp[i][j] = dp[i - 1][j - 1] + 1;
                    else
                        dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
                }
            }
            cout << dp[s1.size()][s2.size()] << endl;
        }
        return 0;
    }
    

      

  • 相关阅读:
    中文编码问题
    TCP网络参数优化
    I/O的整体介绍
    TCP/IP
    Java序列化技术
    WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发)
    λ(lambda)表达式
    HeapByteBuffer和DirectByteBuffer以及回收DirectByteBuffer
    锁的优化和注意事项
    java的NIO和AIO
  • 原文地址:https://www.cnblogs.com/Apro/p/4481347.html
Copyright © 2011-2022 走看看