HDU-1238 Substrings
Substrings
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6238 Accepted Submission(s): 2767
//寻找最长字串并输出其长度
// 思路:
// 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的更多相关文章
- hdu 1238 Substrings(kmp+暴力枚举)
Problem Description You are given a number of case-sensitive strings of alphabetic characters, find ...
- (KMP 字符串处理)Substrings -- hdu -- 1238
http://acm.hdu.edu.cn/showproblem.php?pid=1238 Substrings Time Limit:1000MS Memory Limit:32768KB ...
- hdu 4455 Substrings(计数)
题目链接:hdu 4455 Substrings 题目大意:给出n,然后是n个数a[1] ~ a[n], 然后是q次询问,每次询问给出w, 将数列a[i]分成若干个连续且元素数量为w的集合,计算每个集 ...
- HDOJ 1238 Substrings 【最长公共子串】
HDOJ 1238 Substrings [最长公共子串] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- Substrings - HDU 1238(最大共同子串)
题目大意:给你N个串,求出来他们的最大公共子串的长度(子串反过来也算他们的子串). 分析:很久以前就做过这道题,当时是用的strstr做的,不过相同的都是枚举了子串......还是很暴力,希望下次 ...
- HDU 4455.Substrings
Substrings Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu 4455 Substrings(找规律&DP)
Substrings Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- hdu 4455 Substrings (DP 预处理思路)
Substrings Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- HDU 4455 Substrings[多重dp]
Substrings Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 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 ...
随机推荐
- PHOTOSHOP 制作虚线和实线
1.制作实线可以直接用直线工具,选择合适的粗细大小. 2. 制作虚线首先要用钢笔或者绘图工具画出所需要的形状,如弧线,圆形等等 然后在路径面板中用画笔描边,画笔需要提前设置好粗细和间距,用方形 ...
- 关于WPF中Popup控件的小记
在wpf开发中,常需要在鼠标位置处弹出一个“提示框”(在此就以“提示框”代替吧),通过“提示框”进行信息提示或者数据操作,如果仅仅是提示作用,使用ToolTip控件已经足够,但是有些是需要在弹出的框中 ...
- ECshop网店系统百万级商品量性能优化-简单的一些Cache内存配置
ECshop网店系统对于产品的数据.模板.Query都可以缓存,也就是把一些商品详情页.分类页.Search页的数据经过一次访问后,用文件的形式保存下来,下次有人访问相同的页面时,不用再查数据库,直接 ...
- GAC write failed when upgrade with InstallShield
在接近final-build的时候,突然发现当前版本从上一个版本upgrade的时候,需要写到GAC (Global Assembly Cache)的assambly会写失败掉.但是只会在特定的Mic ...
- Linux-ubuntu
在VMware安装ubuntu时磁盘分配如下: /boot 100MB / 2G swap 512MB /home 5G /var 1G /usr 5G+. 设置root权限:sudo passwd ...
- C语言小结之结构类型
C语言小结之结构类型 @刁钻的游戏 (1)枚举型类型enum COLOR {BLACK,RED,BLUE};//声明一种新的数据类型,其值分别为0,1,2但是用BLACK/RED/BLUE代表也可以这 ...
- 制作精灵(UI Sprite)
怎样判断是否应该使用精灵 在一套UI中,精灵是一种非常常见的元件.当制作UI时,如果需要显示一张图片,需要先判断这个图片是否应该制作到图集里去,然后用精灵的方式去使用它,一般来说,可以遵循以下规律. ...
- Js template engine
P http://www.jquery4u.com/javascript/10-javascript-jquery-templates-engines/ http://www.creativebloq ...
- iOS8定位问题
正文:主要解决iOS8以前能定位,但是在iOS8时候无法定位的问题 在iOS8以前,我们的GPS定位是在用户设置的里面显示的是总是使用,但是在iOS8以后,苹果修改了这部分授权,你需要多加入2个pli ...
- cursor:hand与cursor:pointer的区别介绍
cursor:hand 与 cursor:pointer 的效果是一样的,都像光标指向链接一样,光标变成手行. cursor:hand :IE完全支持.但是在firefox是不支持的,没有效果. cu ...