Substrings - HDU 1238(最大共同子串)
- #include<stdio.h>
- #include<string.h>
- const int MAXN = ;
- const int oo = 1e9+;
- const int mod = ;
- char s[MAXN][MAXN];
- int next[MAXN];
- void GetNext(char s[], int N)
- {
- int i=, j=-;
- next[] = -;
- while(i < N)
- {
- if(j==- || s[i]==s[j])
- next[++i] = ++j;
- else
- j = next[j];
- }
- }
- bool KMP(char a[], char b[])
- {
- int i=, j=;
- int Na = strlen(a);
- int Nb = strlen(b);
- GetNext(b, Nb);
- while(i < Na)
- {
- while(j==- || (a[i]==b[j] && i<Na))
- i++, j++;
- if(j == Nb)return true;
- j = next[j];
- }
- return false;
- }
- bool OK(char a[], char s[])
- {
- if(KMP(a, s) == true)
- return true;
- strrev(s);
- return KMP(a, s);
- }
- int main()
- {
- int T;
- scanf("%d", &T);
- while(T--)
- {
- int i, j, k, N, len=oo, ans=;
- char a[MAXN];///保存最短的那个串
- scanf("%d", &N);
- for(i=; i<=N; i++)
- {
- scanf("%s", s[i]);
- int M = strlen(s[i]);
- if(len > M)
- {
- len = M;
- strcpy(a, s[i]);
- }
- }
- for(i=; i<=len; i++)
- for(j=; i+j<=len; j++)
- {
- char b[MAXN] = {};
- strncpy(b, a+j, i);
- for(k=; k<=N; k++)
- {
- if(OK(s[k], b) == false)
- break;
- }
- if(k > N)
- j=len, ans = i;
- }
- printf("%d\n", ans);
- }
- return ;
- }
Substrings - HDU 1238(最大共同子串)的更多相关文章
- (KMP 字符串处理)Substrings -- hdu -- 1238
http://acm.hdu.edu.cn/showproblem.php?pid=1238 Substrings Time Limit:1000MS Memory Limit:32768KB ...
- HDOJ 1238 Substrings 【最长公共子串】
HDOJ 1238 Substrings [最长公共子串] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- hdu 1238 Substrings(kmp+暴力枚举)
Problem Description You are given a number of case-sensitive strings of alphabetic characters, find ...
- spoj 694. Distinct Substrings 后缀数组求不同子串的个数
题目链接:http://www.spoj.com/problems/DISUBSTR/ 思路: 每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数.如果所有的后缀按照su ...
- HDU 1238 Substing
思路: 1.找出n个字符串中最短的字符串Str[N] 2.从长到短找Str[N]的子子串 subStr[N],以及subStr[N]的反转字符串strrev(subStr[N]):(从长到短是做剪枝处 ...
- HDU 1238
好吧,这题直接搜索就可以了,不过要按照长度最短的来搜,很容易想得到. 记得ACM比赛上有这道题,呃..不过,直接搜..呵呵了,真不敢想. #include <iostream> #incl ...
- hdu 1003 最大连续子串
#include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #defin ...
- poj 3261 后缀数组 找反复出现k次的子串(子串能够重叠)
题目:http://poj.org/problem?id=3261 仍然是后缀数组的典型应用----后缀数组+lcp+二分 做的蛮顺的,1A 可是大部分时间是在调试代码.由于模板的全局变量用混了,而自 ...
- HDU - 2328 Corporate Identity(kmp+暴力)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2328 题意:多组输入,n==0结束.给出n个字符串,求最长公共子串,长度相等则求字典序最小. 题解:(居 ...
随机推荐
- 共享受限资源,Brian的同步规则
说明:如果一个变量是boolean,则此变量是原子性的,即赋值和返回值简单的操作在发生时没有中断的可能. 递增不是原子性炒作. 解决共享资源竞争: 1. 通过加锁,锁语句会产生相互排斥的效果,此种机制 ...
- gulp安装
1. npm install gulp -g 全局安装 npm install gulp --save-dev 安装文件内,纪录于package.json 接著安装插件,完成下列任务 ...
- mahout的安装、配置及运行java程序
一.下载安装包: http://mahout.apache.org/general/downloads.html 二.解压: 将下载的安装包解压到需要的目录下 三.配置环境变量: export MAH ...
- 编码问题导致样式显示在IE中不正常
今天在做项目的时候,遇到样式显示不正常的问题,结果是因为用系统自带的notepad编辑器编辑文件时,编码格式被更改了.我们需要在Notepad++中,将编码格式改成Encode inUTF8 with ...
- C# Winform 双屏显示
双屏显示1 // 利用WinForm中的Screen类,即可比较方便地实现多窗体分别在多个屏幕上显示. //•获取当前系统连接的屏幕数量: Screen.AllScreens.Count(); //• ...
- asp.net在应用母版的页面下采用了ModalPopupExtender弹出窗中应用autocomplete
autocomplete是jqueryUI的一个插件,可以实现自动填充的功能. 要点:1.应用了母版页,所以取页面上控件的ID时与一般方法不同 2.由于用了ajax的updatepanel,所以会出现 ...
- php之利用递归写无限极分类
<?php //无限极分类 //parent 的值,是该栏目的父栏目的id 反之是 /*0 安徽 合肥 北京 海淀 中关村 上地 河北 石家庄 */ $area = array( array(' ...
- JS和jQuery获取节点的兄弟,父级,子级元素
原文转自http://blog.csdn.net/duanshuyong/article/details/7562423 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的 ...
- JS设置Cookie,及COOKIE的限制
在Javascript脚本里,一个cookie 实际就是一个字符串属性.当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值.每个cookie除了 name ...
- angular 实现总价满100折扣
<div ng-controller="CartController"> <div ng-repeat="item in items"> ...