| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
哪位大神出来帮忙一下,我都已经没用strrev函数了。。。仍然是编译错误。#include <stdio.h>
#include <string.h>
int t, n;
char str[101][101];
void mystrrev(char *s)
{
int i, length=strlen(s);
char temp[101];
for(i=0; i<length; i++)
{
temp[i]=s[length-i-1];
}
temp[i]='\0';
strcpy(s,temp);
}
int sm(char *source)
{
int ss=strlen(source),sl=strlen(source),i,j;
bool flag=(true,false);
char substr[101],revstr[101];
while(ss>0)
{
//搜索不同长度的子串,从不同长度开始搜索。
for(i=0;i<=sl-ss;i++)
{
//搜索长度为ss的子串
strncpy(substr,source+i,ss);//复制字符串中的子串。
strncpy(revstr,source+i,ss);
substr[ss]=revstr[ss]='\0';
mystrrev(revstr);//对字符串进行反序.系统不支持strrev函数,故另设函数
flag=true;
for(j=0;j<n;j++)
if(strstr(str[j],substr)==NULL&&strstr(str[j],revstr)==NULL)//在字符串中寻找子字符串。
{
flag=false;
break;
}
if(flag)
return(ss);
}
ss--;
}
return 0;
}
void main()
{
int min,i;
char ms[101];
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
min=100;
for(i=0;i<n;i++)
{
scanf("%s",str[i]);
if(strlen(str[i])<min)
{
//寻找输入字符串中最短的字符串。
strcpy(ms,str[i]);//复制字符串
min=strlen(ms);
}
}
printf("%d\n",sm(ms));
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator