文章

5

粉丝

221

获赞

12

访问

23.1k

头像
换个思路或许更方便
P1730 西安电子科技大学2018年机试题
发布于2022年8月9日 17:40
阅读数 4.1k

#include<bits/stdc++.h>
using namespace std;

const int maxn = 100 + 5;
string dp[maxn][maxn];
string s1,s2;

int main(){
    while(cin>>s1>>s2){
        int len1 = s1.length();
        int len2 = s2.length();
        for(int i=0;i<=len1;i++){
            for(int j=0;j<=len2;j++)    dp[i][j] = "";
        }
        
        int ans_len = 0;
        string ans_str = "";
        for(int i=1;i<=len1;i++){
            for(int j=1;j<=len2;j++){
                if(s1[i-1]==s2[j-1])  dp[i][j] = dp[i-1][j-1] + s1[i-1];
                else    dp[i][j] = "";
                int len = dp[i][j].length();
                if(ans_len<=len){
                    ans_len = len;
                    ans_str = dp[i][j];
                }
            }
        }
        cout<<ans_len<<endl<<ans_str<<endl;
    }
    return 0;
}

emm,一般都使用dp存长度的结果,对于这种问题,我们可以转换思路用dp来存答案。

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发