讨论 / 我这个朴素的匹配才3个点,谁知道怎么回事
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);

}

}

#1 suturkey@2008-11-07 15:52:00
回复 删除
边做边删可过7个点
查看更多回复
提交回复