Substrings

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6238    Accepted Submission(s): 2767

Problem Description
You are given a number of case-sensitive strings of alphabetic characters, find the largest string X, such that either X, or its inverse can be found as a substring of any of the given strings.
 
Input
The first line of the input file contains a single integer t (1 <= t <= 10), the number of test cases, followed by the input data for each test case. The first line of each test case contains a single integer n (1 <= n <= 100), the number of given strings, followed by n lines, each representing one string of minimum length 1 and maximum length 100. There is no extra white space before and after a string.
 
Output
There should be one line per test case containing the length of the largest string found.
 
Sample Input
2
3
ABCD
BCDFF
BRCD
2
rose
orchid
Sample Output
2
2
 
Author
Asia 2002, Tehran (Iran), Preliminary
 
Recommend
Eddy
 //寻找最长字串并输出其长度
// 思路:
// 1、先寻找其中最短字符串str,求子字符串就要先找最短的字符串
// 2、根据str搜索满足条件的子字符串
// 3、对str的各子字符串从长到短一次判断是否满足条件,直到找到一个符合条件的子字符串为止
//strlen:计算字符串长度
//strstr:在字符串中寻找子字符串,它的用法用的少,但是碰到了,就要熟练。
//strncpy:复制字符串中的字串,它的用法要掌握。
//strcpy:复制字符串
//怎样找最短字符串,也是值得学习的。。
//搜索满足条件的最长子串.
#include<stdio.h>
#include<string.h>
char a[][];
int n;
void cmp(char *str)//字符串反序
{
int l,i,g=;
char b[];
l=strlen(str);
for(i=;i<l;i++)
b[g++]=str[l-i-];
b[g]='\0';
strcpy(str,b);
}
int search(char *str)//搜索满足条件的最长子串并返回其长度
{
int l1,l2,i,j,f;
char s[],r[];
l1=strlen(str);l2=strlen(str);
while(l1>)//搜索不同长度的子串,从最长的子串开始搜索
{
for(i=;i<=l2-l1;i++)
{
strncpy(s,str+i,l1);//strncpy的函数用法必须是str+i不能写成str【i】;
strncpy(r,str+i,l1);
s[l1]=r[l1]='\0';
cmp(r);
f=;
for(j=;j<n;j++)
if(strstr(a[j],s)==NULL && strstr(a[j],r)==NULL)
{
f=;
break;
}
if(f==)
return l1;
}
l1--;
}
return ;
} int main()
{
int i,minstrlen,substrlen,t;//minstrlen记录最短字符串的长度,substrlen返回最长子串长度
char minstr[];
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
minstrlen=;//先假设字符串最小长度值为100
for(i=;i<n;i++)
{
scanf("%s",a[i]);
if(strlen(a[i])<minstrlen)//寻找n个字符串中最短的字符串
{
strcpy(minstr,a[i]);
minstrlen=strlen(minstr);
}
}
substrlen=search(minstr);
printf("%d\n",substrlen);
}
return ;
}
 

HDU-1238 Substrings的更多相关文章

  1. hdu 1238 Substrings(kmp+暴力枚举)

    Problem Description You are given a number of case-sensitive strings of alphabetic characters, find ...

  2. (KMP 字符串处理)Substrings -- hdu -- 1238

    http://acm.hdu.edu.cn/showproblem.php?pid=1238 Substrings Time Limit:1000MS     Memory Limit:32768KB ...

  3. hdu 4455 Substrings(计数)

    题目链接:hdu 4455 Substrings 题目大意:给出n,然后是n个数a[1] ~ a[n], 然后是q次询问,每次询问给出w, 将数列a[i]分成若干个连续且元素数量为w的集合,计算每个集 ...

  4. HDOJ 1238 Substrings 【最长公共子串】

    HDOJ 1238 Substrings [最长公共子串] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...

  5. Substrings - HDU 1238(最大共同子串)

    题目大意:给你N个串,求出来他们的最大公共子串的长度(子串反过来也算他们的子串).   分析:很久以前就做过这道题,当时是用的strstr做的,不过相同的都是枚举了子串......还是很暴力,希望下次 ...

  6. HDU 4455.Substrings

    Substrings Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  7. hdu 4455 Substrings(找规律&DP)

    Substrings Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  8. hdu 4455 Substrings (DP 预处理思路)

    Substrings Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  9. HDU 4455 Substrings[多重dp]

    Substrings Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  10. HDU - 4455 Substrings(非原创)

    XXX has an array of length n. XXX wants to know that, for a given w, what is the sum of the distinct ...

随机推荐

  1. quality center的使用简介

    quality center是一个基于Web的测试管理工具,其实是伪B/S的软件,可以组织和管理应用程序测试流程的所有阶段,包括制定测试需求.计划测试.执行测试和跟踪缺陷.此外,通过Quality C ...

  2. 005.ClearStoredGroups方法

    Delphi procedure ClearStoredGroups; 类型:procedure 可见性:protected 所在单元:System.RegularExpressionsCore 父类 ...

  3. 学习PYTHON第一天

    需要掌握的内容 1.编程语言 2.python   .  C#   JAVA 3.python:  pypy    cpython     jpython 4.执行方式 解释器 文件执行 5.指定解释 ...

  4. RAC 安装完成后 节点间通信不依赖于SSH

    RAC 安装完成后,想修改ssh 的端口.google了一下.原文https://community.oracle.com/thread/2444594?tstart=0 原文说的是11g,10g也好 ...

  5. win8.1系统下,点击一个窗口,【当前活动窗口】该窗口无法置顶

    两个或多个窗口同时显示在桌面的时候,点击下一层的窗口,无法置顶显示,无论怎么点击,还是隐藏在原置顶窗口的后面,只能手动把原置顶窗口最小化后,才能看到.例如,A窗口现在置顶,B窗口在A的后面,露出来一部 ...

  6. python 生成排列、组合以及选择

    from <python cookbook> 19.15 任务 需要对一个序列的排列(permutation).组合(combination)或选择(selection)进行迭代操作.即使 ...

  7. sparkR原理

    p.p1 { margin: 0.0px 0.0px 10.0px 0.0px; font: 11.0px "Times New Roman"; min-height: 12.0p ...

  8. 在树莓派上部署asp.net

    今天成功的在树莓派上部署asp.net呢.之前在unbuntu上测试成功了,结果今天操作的时候又不会操作了,主要对Linux太不熟悉了,找资料,资料又不多,这次赶紧记录下来,以备下次查阅. 我用的mo ...

  9. NSAssert使用摘抄

    #define NSAssert(condition, desc, ...) 只有条件condition满足,才会执行下一个语句,否则输出断言错误. 例如: NSAssert(1 != 2, @&qu ...

  10. 上下切换js

    <div class="wview"> <span class="prevs" id="prevs-j"></ ...