回文子串

合并回文子串

https://ac.nowcoder.com/acm/problem/13230















#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+7; 
typedef long long ll;
inline ll read(){
    ll s = 0, w = 1; char ch = getchar();
    while (ch < 48 || ch > 57) { if (ch == '-') w = -1; ch = getchar(); }
    while (ch >= 48 && ch <= 57) s = (s << 1) + (s << 3) + (ch ^ 48), ch = getchar();
    return s * w;
}
bool f[101][101][101][101];
char a[101],b[101];
int main() {
    int t;
    scanf("%d",&t);
    while(t--) {
        int ans=0;
        scanf("%s%s",a+1,b+1);
        int n=strlen(a+1),m=strlen(b+1),j,l;
        for(int len1=0;len1<=n;++len1)
        for(int len2=0;len2<=m;++len2)
        for(int i=1;i+len1-1<=n;++i)
        for(int k=1;k+len2-1<=m;++k) {
            j=i+len1-1,l=k+len2-1;
            if(len1+len2<=1) f[i][j][k][l]=true;
            else{
                f[i][j][k][l]=false;
                if(len1>1) f[i][j][k][l]|=(f[i+1][j-1][k][l]&&a[i]==a[j]);
                if(len1&&len2) f[i][j][k][l]|=(f[i+1][j][k][l-1]&&a[i]==b[l])|(f[i][j-1][k+1][l]&&a[j]==b[k]);
                if(len2>1) f[i][j][k][l]|=(f[i][j][k+1][l-1]&&b[k]==b[l]);
            }
            if(f[i][j][k][l]) ans=max(ans,len1+len2);
        }
        printf("%d\n",ans);
    }
}
全部评论
太强了
点赞 回复 分享
发布于 2020-09-28 18:50
太强了
点赞 回复 分享
发布于 2020-09-28 21:39

相关推荐

11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务