zoukankan      html  css  js  c++  java
  • POJ2250

    题目大意

    给定两段文本,问公共单词有多少个

    题解

    裸LCS。。。

    代码:

    #include<iostream>
    #include<string>
    using namespace std;
    #define MAXN 105
    string x[MAXN],y[MAXN];
    int path[MAXN][MAXN],dp[MAXN][MAXN];
    int n,m;
    void work()
    {
        for(int i=1; i<=n; i++)
            dp[i][0]=0;
        for(int j=0; j<=m; j++)
            dp[0][j]=0;
        for(int i=0; i<n; i++)
            for(int j=0; j<m; j++)
                if(x[i]==y[j])
                {
                    dp[i+1][j+1]=dp[i][j]+1;
                    path[i+1][j+1]=0;
                }
                else
                {
                    if(dp[i][j+1]<dp[i+1][j])
                    {
                        dp[i+1][j+1]=dp[i+1][j];
                        path[i+1][j+1]=1;
                    }
                    else
                    {
                        dp[i+1][j+1]=dp[i][j+1];
                        path[i+1][j+1]=-1;
                    }
                }
    }
    void print(int i,int j)
    {
        if(i==0||j==0)
            return;
        if(path[i][j]==0)
        {
            print(i-1,j-1);
            cout<<x[i-1]<<" ";
        }
        else if(path[i][j]==1)
            print(i,j-1);
        else
            print(i-1,j);
    }
    int main()
    {
        string s;
        while(cin>>s)
        {
            n=0,m=0;
            x[n++]=s;
            while(cin>>s&&s[0]!='#')
                x[n++]=s;
            while(cin>>s&&s[0]!='#')
                y[m++]=s;
            work();
            print(n,m);
            cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    缓存服务器
    Consistent Hashing算法-搜索/负载均衡
    MinHash算法-复杂度待整理
    搜索引擎spam
    C语言字节对齐
    关于访问权限的问题
    计蒜客button 概率
    LightOJ
    LightOJ
    LightOJ
  • 原文地址:https://www.cnblogs.com/zjbztianya/p/3256059.html
Copyright © 2011-2022 走看看