zoj 1374 & & 2784 & & 2907 문자열 검색
zoj 1374 Substrings 제목:
n 개의 문자열 을 보 여 줍 니 다. 그 중에서 가장 긴 문자열 을 찾 아야 합 니 다. 정반 대도 좋 습 니 다.
분석:
그 중에서 가장 짧 은 문자열 을 찾 은 다음 에 열 거 된 하위 문자열 을 찾 은 다음 에 모든 문자열 에서 찾 습 니 다.
강력 한 strstr 함수:
strstr(char *haystack,char *needle) :
문자열 haystack 에서 needle 이 처음 나타 난 위 치 를 찾 습 니 다.
#include<stdio.h>
#include<string.h>
int main()
{
char str[105][105],up[105],back[105];
int t,n,i,j,k,min,temp,len,num;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
min=999;
for(i=0;i<n;i++)
{
scanf("%s",str[i]);
len=strlen(str[i]);
if(min>len)
{
min=len;
temp=i;
}
}
for(i=1;i<=min;i++)//i ....
{
for(j=0;j+i-1<min;j++)//j+i-1 ,j
{
for(k=0;k<i;k++)//
{
up[k]=str[temp][k+j];
back[k]=str[temp][i+j-k-1];// 。
}
up[k]='\0';
back[k]='\0';// ,
for(k=0;k<n;k++)// ,strstr
{
if(strstr(str[k],up)==NULL&&strstr(str[k],back)==NULL)
break;
}
if(k>=n)
{
num=i;
}
}
}
printf("%d
",num);
}
return 0;
}
zoj 2784 blue jeans 작년 학교 경기 제목
#include<stdio.h>
#include <string.h>
int main()
{
int n,m;
char str[12][62],a[62],b[62];
int i,j,len,num,tmp,k,t;
scanf("%d",&n);
while(n--)
{
num=0;
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%s",str[i]);
len=strlen(str[0]);
for(i=1;i<=len;i++)
{
for(j=0;j+i-1<len;j++)
{
for(k=0;k<i;k++)
{
a[k]=str[0][j+k];
}
a[k]='\0';
for(k=0;k<m;k++)
{
if(strstr(str[k],a)==NULL)
break;
}
if(k>=m)
{
tmp=strlen(a);
if(tmp==num)
{
for(t=0;t<num;t++)
{
if(a[t]<b[t])
{
for(t=0;t<=num;t++)
b[t]=a[t];
break;
}
}
}
if(tmp>num)
{
num=tmp;
for(t=0;t<=num;t++)
{
b[t]=a[t];
}
}
}
}
}
if(num>=3)
printf("%s
",b);
else printf("no significant commonalities
");
}
return 0;
}
zoj 2907 Corporate Identity,==b
많 지 않 은 문제.폭력 을 끝까지!!!
#include<stdio.h>
#include <string.h>
int main()
{
int m;
char str[4005][205],a[205],b[205];
int i,j,len,num,tmp,k,t,l1=255,pos;
while(scanf("%d",&m)!=EOF)
{
num=0;
l1=255;
if(m==0) break;
for(i=0;i<m;i++)
{
scanf("%s",str[i]);
len=strlen(str[i]);
if(len<l1)
{
l1=len;
pos=i;
}
}
for(i=1;i<=l1;i++)
{
for(j=0;j+i-1<l1;j++)
{
for(k=0;k<i;k++)
{
a[k]=str[pos][j+k];
}
a[k]='\0';
for(k=0;k<m;k++)
{
if(strstr(str[k],a)==NULL) break;
}
if(k>=m)
{
tmp=strlen(a);
if(tmp==num)
{
for(t=0;t<num;t++)
{
if(a[t]>b[t]) break;
if(a[t]<b[t])
{
for(t=0;t<=num;t++)
b[t]=a[t];
break;
}
}
}
if(tmp>num)
{
num=tmp;
for(t=0;t<=num;t++)
{
b[t]=a[t];
}
}
}
}
}
if(num>=1)
printf("%s
",b);
else printf("IDENTITY LOST
");
}
return 0;
}
/*
3
abcclaab
abccdaab
abcckaab
*/
/*
3
asdsaaa
sdswssaaa
sdsaaa
*/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.