SSL-ZYC 2575 给出字符串
2018-03-10 15:26
225 查看
题目大意:
给出一个由小写字母组成的字符串。你的任务是找出其最长的出现至少两次的子串的长度。
思路:
纯模拟。
这道题我用的是O(n^4)的方法。前两个循环分别枚举两个子串的起始位置,第三个循环枚举这两个字串的长度,最后一个循环用来比较两个子串是否相同。加上一点优化,AC!
代码:
给出一个由小写字母组成的字符串。你的任务是找出其最长的出现至少两次的子串的长度。
思路:
纯模拟。
这道题我用的是O(n^4)的方法。前两个循环分别枚举两个子串的起始位置,第三个循环枚举这两个字串的长度,最后一个循环用来比较两个子串是否相同。加上一点优化,AC!
代码:
#include <cstdio> #include <iostream> #include <cstring> using namespace std; char a[201],b[201],c[201]; int n,maxn; int main() { scanf("%s",&a); n=strlen(a); for (int i=0;i<=n-2;i++) { for (int j=i+1;j<=n-1;j++) //枚举子串开始位置 { for (int k=1;k<=n-1;k++) //字串长度 { int ok=1; memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); for (int q=1;q<=k;q++) b[q]=a[q+i-1]; for (int q=1;q<=k;q++) { c[q]=a[q+j-1]; if (c[q]!=b[q]) //如果与另一个字串不相同 { ok=0; break; //退出 } } if (ok==1&&k>maxn) maxn=k; else if (ok==0) break; } } } printf("%d\n",maxn); return 0; }
相关文章推荐
- SSL_2575 给出字符串
- SSL 2575 给出字符串
- 【2018.3.10】模拟赛之二-ssl2575 给出字符串【字符串】
- 8.11 2575 给出字符串
- SSL-ZYC 2344 刻录光盘
- 给出一个字符串和长度,给字符串进行分隔
- SSL-ZYC 1626(洛谷P1854) 花店橱窗布置
- 算法 - 给出一个字符串str,输出包含两个字符串str的最短字符串,如str为abca时,输出则为abcabca
- 给一个字符串,例如”ababc",要求返回"ab"。因为"ab”连续重复出现且最长。用C/C++语言写一个函数完成该算法,给出复杂度
- 给出两个字符串,找到最长公共子序列(LCS),返回LCS的长度。C实现
- 4、给出一个函数复制两个字符串A和B,A的后几个和B的前几个字节重叠
- SSL-ZYC 2547 圆环
- 将以字符串形式给出的浮点数的十六进制形式转换成十进制形式(方法太麻烦,请各位大侠帮忙改进!)
- 给出一个函数来输出一个字符串的所有排列
- SSL-ZYC 1692 魔板
- 给出函数atoi(x)的实现方法,其功能是将字符串x转换为整数
- SSL-ZYC 1761 城市问题
- SSL-ZYC 大盗阿福
- SSL-ZYC 愤怒的牛
- Leetcode 336. Palindrome Pairs 给出一种遍历字符串回文子串中心的方法