字符环

总时间限制: 
1000ms

内存限制: 
65536kB
描述

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

输入
一行,包含两个字符串,分别对应一个字符环。这两个字符串之间用单个空格分开。字符串长度不超过255,且不包含空格等空白符。
输出
输出一个整数,表示这两个字符环上最长公共字符串的长度。
样例输入
ABCEFAGADEGKABUVKLM MADJKLUVKL
样例输出
6

代碼實現:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 using namespace std;
 5 int ans,nl,la,lb,a,b;
 6 char ca[3000],cb[3000];
 7 int main(){
 8     scanf("%s%s",&ca,&cb);
 9     la=strlen(ca);lb=strlen(cb);
10     for(int i=0;i<la;i++){
11         for(int j=0;j<lb;j++){
12             a=i,b=j,nl=0;
13             while(ca[a]==cb[b]&&nl<min(la,lb)){++a,++b,a%=la,b%=lb,nl++;}//這裡要判nl的大小,是有範圍的不然它會一直搜下去。
14             if(nl>ans) ans=nl;
15         }
16     }
17     printf("%d\n",ans);
18     return 0;
19 }

。。。

时间: 2024-10-13 12:28:43

字符环的相关文章

AC日记——字符环 openjudge 1.7 30

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

30:字符环

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

字符环(openjudge 2755)

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

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,表示测试

字符串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

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 1.7编程基础之字符串(35题)

01:统计数字字符个数 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 输入一行字符,统计出其中数字字符的个数. 输入 一行字符串,总长度不超过255. 输出 输出为1行,输出字符串里面数字字符的个数. 样例输入 Peking University is set up at 1898. 样例输出 4 来源 习题(7-1) 医学部 2010 期末试题 樊波 1 #include<cstdio> 2 #include<cstring> 3 ch

【USACO 5.5.2】Hidden Password

题目大意 给出从一个字符环,求从哪个位置断开后的字符串的字典序最小. 题解 不多说,一条模板题.就是后缀数组(或后缀树). 先把字符串倍长,后缀数组预处理(请看相关资料),扫一遍SA数组,找符合条件的即可. 代码 /* TASK:hidden LANG:C++ */ #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 200005;

整理小朋友在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% 有必要