字符环(openjudge 2755)

字符环

总时间限制:

1000ms

 

内存限制:

65536kB

描述

有两个由字符构成的环。请写一个程序,计算这两个字符环上最长连续公共字符串的长度。例如,字符串“ABCEFAGADEGKABUVKLM”的首尾连在一起,构成一个环;字符串“MADJKLUVKL”的首尾连在一起,构成一个另一个环;“UVKLMA”是这两个环的一个连续公共字符串。

输入

一行,包含两个字符串,分别对应一个字符环。这两个字符串之间用单个空格分开。字符串长度不超过255,且不包含空格等空白符。

输出

输出一个整数,表示这两个字符环上最长公共字符串的长度。

样例输入

ABCEFAGADEGKABUVKLM MADJKLUVKL

样例输出

6

这题我用了一点小动规

代码

#include<iostream>
#include<cstring>
using namespace std;
string s1,s2;
int f[260][260],l1,l2,ans;
void dp(int l,int r)
{
    memset(f,0,sizeof(f));
    for(int i=0;i<l1;i++)
        for(int j=0;j<l2;j++)
        {
            if(s1[i+l]==s2[j+r])f[i+1][j+1]=f[i][j]+1;
            ans=max(ans,f[i+1][j+1]);
        }
}
int main()
{
    cin>>s1>>s2;
    l1=s1.length(),l2=s2.length();
    s1+=s1;s2+=s2;
    for(int i=0;i<l1;i++)
        for(int j=0;j<l2;j++)
            dp(i,j);
    cout<<ans;
}
时间: 2024-10-05 22:20:16

字符环(openjudge 2755)的相关文章

AC日记——字符环 openjudge 1.7 30

30:字符环 总时间限制:  1000ms 内存限制:  65536kB 描述 有两个由字符构成的环.请写一个程序,计算这两个字符环上最长连续公共字符串的长度.例如,字符串“ABCEFAGADEGKABUVKLM”的首尾连在一起,构成一个环:字符串“MADJKLUVKL”的首尾连在一起,构成一个另一个环:“UVKLMA”是这两个环的一个连续公共字符串. 输入 一行,包含两个字符串,分别对应一个字符环.这两个字符串之间用单个空格分开.字符串长度不超过255,且不包含空格等空白符. 输出 输出一个整

字符环

总时间限制:  1000ms 内存限制:  65536kB 描述 有两个由字符构成的环.请写一个程序,计算这两个字符环上最长连续公共字符串的长度.例如,字符串"ABCEFAGADEGKABUVKLM"的首尾连在一起,构成一个环:字符串"MADJKLUVKL"的首尾连在一起,构成一个另一个环:"UVKLMA"是这两个环的一个连续公共字符串. 输入 一行,包含两个字符串,分别对应一个字符环.这两个字符串之间用单个空格分开.字符串长度不超过255,且不

30:字符环

30:字符环总时间限制: 1000ms 内存限制: 65536kB描述有两个由字符构成的环.请写一个程序,计算这两个字符环上最长连续公共字符串的长度.例如,字符串“ABCEFAGADEGKABUVKLM”的首尾连在一起,构成一个环:字符串“MADJKLUVKL”的首尾连在一起,构成一个另一个环:“UVKLMA”是这两个环的一个连续公共字符串. 输入一行,包含两个字符串,分别对应一个字符环.这两个字符串之间用单个空格分开.字符串长度不超过255,且不包含空格等空白符.输出输出一个整数,表示这两个字

ECNUOJ 2147 字符环

字符环 Time Limit:1000MS Memory Limit:65536KBTotal Submit:562 Accepted:146 Description  字符环:就是将给定的一个字符串,首尾相连而形成的一个环.现在我们来玩一个有趣的两人游戏:每次甲给出两个字符串A和B,然后让乙判断字符串B是否能够被字符环A所包含.例如,A = aabcd , B = cdaa , 那么B可以包含在A经过旋转后的字符串A’ = cdaab中. Input  输入数据的第一行,一个正整数N,表示测试

AC日记——字符替换 openjudge 1.7 08

08:字符替换 总时间限制:  1000ms 内存限制:  65536kB 描述 把一个字符串中特定的字符全部用给定的字符替换,得到一个新的字符串. 输入 只有一行,由一个字符串和两个字符组成,中间用单个空格隔开.字符串是待替换的字符串,字符串长度小于等于30个字符,且不含空格等空白符:接下来一个字符为需要被替换的特定字符:接下来一个字符为用于替换的给定字符. 输出 一行,即替换后的字符串. 样例输入 hello-how-are-you o O 样例输出 hellO-hOw-are-yOu 来源

字符串c++字符环

今天这个题目及其难.还好靠身边的丁冠宇大佬帮忙,最后还是把这道题给搞出来了!!! 这里给大家分享一下.希望能帮助到各位. #include <iostream> #include <cstring> #include <algorithm> using namespace std; int main() { int x, y, len, len1, len2, limit, ans=0; string s1, s2; cin >> s1 >> s

OpenJudge 2755:神奇的口袋

总时间限制: 10000ms 内存限制: 65536kB 描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an.John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品.现在的问题是,John有多少种不同的选择物品的方式. 输入 输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的数目.接下来的n行,每行

noi题库(noi.openjudge.cn) 1.7编程基础之字符串T21——T30

T21:单词替换 描述 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写.现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串. 输入 输入包括3行,第1行是包含多个单词的字符串 s;第2行是待替换的单词a(长度 <= 100);第3行是a将被替换的单词b(长度 <= 100). s, a, b 最前面和最后面都没有空格. 输出 输出只有 1 行,将s中所有单词a替换成b之后的字符串. 样例输入 You w

整理小朋友在noi.openjudge上的作业(1)

NOI(题库正在建设中,做题纪录有可能会被删除,请注意) 第一章的统计放前面 1 编程基础之输入输出 10 0 0% 最基础有空补刷 2 编程基础之变量定义.赋值及转换 10 0 0% 最基础有空补刷 3 编程基础之算术表达式与顺序执行 20 0 0% 最基础有空补刷 4 编程基础之逻辑表达式与条件分支 21 0 0% 最基础有空补刷 5 编程基础之循环控制 45 10 22% 最基础有空补刷 6 编程基础之一维数组 15 5 33% 最基础有空补刷 7 编程基础之字符串 35 0 0% 有必要