HDU-1238 Substrings

题目链接:HDU-1238

题目大意:问给定个数的一些字符串中 最长的公共子串有多长 子串反过来匹配也算

解题思路:从最短的字符串进行暴力切割 取到他的各种子串 然后将此子串的原形式和反向形式与给定字符串进行匹配识别 如果都含有就输出长度就好了 匹配过程用kmp 觉得暴力匹配会超时

代码块:

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int nex[1005];void getNext(string strA){int len = strA.length();
//  cout<<"len = "<<len<<endl;nex[0] = 0;int i = 1, j = 0;while(i < len){if(strA[i] == strA[j]){nex[i++] = ++j;}else if(j != 0){j = nex[j - 1];}else{nex[i++] = 0;}}
}int kmp(const string strStr, const string strSub){int lenStr = strStr.length();int lenSub = strSub.length();int i = 0, j = 0;while(i < lenStr && j < lenSub){if(j == 0 || strStr[i] == strSub[j]){if(strStr[i] == strSub[j]){j++;}i++;}else{j = nex[j - 1];}} if(j == lenSub) return i - j;else return -1;
} int main(){int n;cin>>n;while(n--){int k;cin>>k;string strA[105];int minSize = 9999999;int minIndex = 0;for(int i = 0; i < k; i++){cin>>strA[i];if(strA[i].length() < minSize){minSize = strA[i].length();minIndex = i;}}int res = 0;for(int i = minSize; i > 0; i--){// 字串长度 for(int j = 0; j <= minSize - i; j++){ //起始位置 string strSub = "";for(int q = j; q < i + j; q++){strSub += strA[minIndex][q];}
//              cout<<"minSize = "<<minSize<<endl;
//              cout<<"strSub = "<<strSub<<"|"<<endl;// 这里已经得到暴力得来的字串 字串顺序从长到短 从前到后// 进去查找步骤 getNext(strSub);
//              for(int g = 0; g < minSize + 1; g++){//                  cout<<"--"<<next[g]<<endl;
//              }bool isT = true;for(int q = 0; q < k; q++){int value1 = kmp(strA[q], strSub);// 将strA[q]反序查找 string strcp = "";for(int c = strA[q].length() - 1; c >= 0; c--){strcp += strA[q][c];} int value2 = kmp(strcp, strSub);
//                  cout<<"value = "<<value<<endl;if(value1 == -1 && value2 == -1){isT = false;break;}} if(isT){res = i;goto c;}memset(nex,0,sizeof(nex));}}c:{cout<<res<<endl;};}return 0;
}

HDU-1238 Substrings相关推荐

  1. HDU 4455 Substrings(dp+树状数组优化)

    题意: 给定一个序列ai,个数为n.再给出一系列w: 对于每个w,求序列中,所有长度为w的连续子串中的权值和,子串权值为子串中不同数的个数 解析: 一直想不出来怎么转移,看了网络上面的题解才明白怎么做 ...

  2. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  3. poj 3261 后缀数组 找反复出现k次的子串(子串能够重叠)

    题目:http://poj.org/problem?id=3261 仍然是后缀数组的典型应用----后缀数组+lcp+二分 做的蛮顺的,1A 可是大部分时间是在调试代码.由于模板的全局变量用混了,而自 ...

  4. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

  5. 杭电OJ分类题目(2)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(2) HDU Water~~~ HDU 100 ...

  6. kuangbin带你飞 专题1-23 题单

    kuangbin大神,对于打过ACM比赛的ACMer,无人不知无人不晓. 在此,附上vjudge平台上一位大神整理的[kuangbin带你飞]专题目录链接. [kuangbin带你飞专题目录1-23] ...

  7. 老鱼的-kuangbin专题题解

    kuangbin专题问题一览 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow POJ 3279 Flipt ...

  8. 惹某人突然不舍de第七周(习题+感悟)

    我是个没有感情的WA题机器人 (一)课堂 A - 小兔的棋盘 HDU - 2067 Input Output Sample Input Sample Output AC代码 (二)有趣的题目 A - ...

  9. ACM比赛经验、刷题记录及模板库总结(更新中)

    前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...

  10. [kuangbin]各种各样的题单

    [kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...

最新文章

  1. drupal cve-2018-7600 远程代码执行漏洞 简介
  2. 学好python工资一般多少钱-学会Python后,月薪40k是什么水平?
  3. SERVICE问题解决方法
  4. oracle 9 创建数据库,Oracle 9i创建数据库(转)
  5. 架构师考试的一些想法
  6. jQueryEasyUI各个版本(1.1-1.9)下载
  7. 祭奠被遗忘的冒泡排序
  8. EAGLE layout 拼板方法
  9. 打印机服务器不支持1020,HP1020打印机驱动安装不上的解决办法
  10. QThread线程详细用法
  11. 乘法鉴相器的matlab仿真,基于COSTAS环的载波恢复技术
  12. Python报错集合篇7-KeyError: 1
  13. JNA使用问题及解决
  14. 【全开源+免费更新】doodoo.js创建项目教程
  15. android创建图片资源文件,Android图片添加水印图片并把图片保存到文件存储的实现代码...
  16. data单复数一样吗_data和datum谁是单数形式,谁是复数形式?
  17. 天龙八部为什么得到角色信息失败 服务器繁忙《302》,每日最大化获取活跃值的方法分享:卡到499点是关键...
  18. THC温湿度测控系统---系统分析与设计
  19. 如何成为一名优秀的网络工程师?
  20. 李嘉诚的区块链应用投资哲学

热门文章

  1. 苹果ios超级签名源码包java版带分发页面支持安卓合并部署教程
  2. python的endswith()的用法及实例
  3. 7.TensorRT中文版开发教程-----TensorRT中的INT8量化详解
  4. 算法和刷题——二分法
  5. 我读Saliency Filters cvpr 2012
  6. 快速确定针式打印机故障部位方法
  7. Java代理模式作用
  8. jquery ajax,ashx,json用法小结
  9. shell脚本中等待上一条命令执行结束在执行下一条。
  10. IPEmotion数据处理-分类元件的灵活运用——车辆制动次数的多样计算