首页 > 代码库 > HDU 1238
HDU 1238
好吧,这题直接搜索就可以了,不过要按照长度最短的来搜,很容易想得到。
记得ACM比赛上有这道题,呃。。不过,直接搜。。呵呵了,真不敢想。
1 #include <iostream> 2 #include <cstdio> 3 #include <string.h> 4 #include <algorithm> 5 using namespace std; 6 7 char str[105][105]; 8 char s1[105],s2[105]; 9 10 int main(){11 int T;12 scanf("%d",&T);13 while(T--){14 int n; int min_p,minl=1000;15 scanf("%d",&n);16 for(int i=1;i<=n;i++){17 scanf("%s",str[i]);18 int tmp=strlen(str[i]);19 if(minl>tmp){20 min_p=i; minl=tmp;21 }22 }23 for(int i=1;i<=minl;i++){24 bool flag=false;25 for(int k=0;k<=minl-i;k++){26 int p;27 for(p=0;p<i;p++){28 s1[p]=str[min_p][k+p];29 s2[i-p-1]=str[min_p][k+p];30 }31 s1[p]=s2[p]=‘\0‘;32 // printf("%s\n%s\n",s1,s2);33 int j;34 for(j= 1;j<=n;j++)35 if(!strstr(str[j],s1)&&!strstr(str[j],s2))36 break;37 if(j>n){ 38 flag=true;39 break;40 }41 }42 if(!flag){43 printf("%d\n",i-1);44 break;45 }46 }47 }48 return 0;49 }
上面用到了一上strstr()的函数,这个是我从别处学来的,也写写,分析一下。
函数名: strstr 原型是朴素的字符串比较方法
功 能: 在字符串中查找指定字符串的第一次出现
用 法: char *strstr(char *str1, char *str2);
用法:#include <string.h>
功能:
str1: 被查找目标
str2:要查找对象
该函数返回str2第一次在str1中的位置的指针,如果没有找到,返回NULL
函数:find(),属于类string中一个函数。
包含在#include <string>中
功能较多,最常用的便是 string s.find(str)返回的是字符串str第一次在s中出现的位置。否则会返回一个很大的值s.npos
也可以使用s.find(str,5)表示从第5个位置开始查找,返回值和上面相同。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。