cth 2008-11-07 15:52:00
点我顶贴
收藏
删除
我对每个首字母匹配的字符验尾字母,首尾都匹配的就一个一个字母匹配,多朴素的算法啊,才过3个点,其他的输出答案错误。
#include<stdio.h>
char s1[10001],s2[10001];
int l1,l2,p[10001];
int find()
{
int a,b,i,j,count;
for(a=0;a<=10000;a++)
s1[a]=s2[a]=’\0’;
scanf("%s\n",&s1);
scanf("%s\n",&s2);
count=0;
for(l1=0;s1[l1]!=’\0’ && s1[l1]!=’\n’;l1++);
--l1;
for(l2=0;s2[l2]!=’\0’ && s2[l2]!=’\n’;l2++);
--l2;
for(a=0;a<=l2-l1+1;a++)
{
if(s1[0]!=s2[a])
continue;
else if(s1[l1]!=s2[a+l1])
continue;
b=1;
for(i=a+1,j=1;j<=l1;)
{
if(s1[j]!=s2[i])
{
b=0;
break;
}
j++;
i++;
}
if(b==1)
{
count++;
p[count]=a;
}
}
return count;
}
int main()
{
int i,j;
i=find();
if(i==0)
printf("There must be something wrong.");
else
{
printf("%d\n",i);
for(j=1;j<i;j++)
printf("%d\n",p[j]+1);
printf("%d",p[j]+1);
}
}