当前位置: 代码迷 >> C语言 >> 字符串题
  详细解决方案

字符串题

热度:172   发布时间:2006-12-04 23:11:30.0
字符串题

题目:编写一个程序,判断一个字符串是否是另一个字符串的子串,若是,返回子串第一次在主串中出现的位置,否则返回-1;



#include<stdio.h>
int acm(char a[30],char b[30])
{
int i=1,j=0;
for(j=0;j<30;j++) 我知道此处不对,我不知道此处怎样编才能实现原题的功能。
if(b[0]==a[j])
return j+1;
for(j=0;j<30;j++)
if(b[i]==a[j])
i++;
for(j=0;j<30;j++)
if(b[i]!=a[j]||b[0]!=a[j])
return -1;
}

void main()
{
char iteam[30],itean[30];
int asd;
printf("input some words:\n");
scanf("%s",&iteam);
printf("input some words again:\n");
scanf("%s",&itean);
asd=acm(iteam,itean);
printf("%d",asd);

}

搜索更多相关的解决方案: 字符  

----------------解决方案--------------------------------------------------------
以下是引用小笑孩在2006-12-4 23:11:30的发言:

题目:编写一个程序,判断一个字符串是否是另一个字符串的子串,若是,返回子串第一次在主串中出现的位置,否则返回-1;



#include<stdio.h>
int acm(char a[],char b[])
{
int i=1,j=0;
for(j=0;j<strlen(a);j++) 我知道此处不对,我不知道此处怎样编才能实现原题的功能。
if(b[0]==a[j])
return j+1;
for(j=0;j<strlen(b);j++)
if(b[i]==a[j])
i++;
for(j=0;j<strlen(a);j++)
if(b[i]!=a[j]||b[0]!=a[j])
return -1;
}

void main()
{
char iteam[30],itean[30];
int asd;
printf("input some words:\n");
scanf("%s",&iteam);
printf("input some words again:\n");
scanf("%s",&itean);
asd=acm(iteam,itean);
printf("%d",asd);

}

但你的算法还是不对.

给你个参考函数.

/*朴素模式匹配*/
int indx(seqstring p,seqstring t)
{
int j,i=0,succ=0;
while((i<=t.size-p.size+1)&&(!succ))
{
j=0;
succ=1;
while((j<=p.size-1)&&succ)
if(p.a[j]==t.a[i+j])
{
j++;
}
else
{
succ=0;
}
++i;
}
if(succ) return i-1;
else return -1;
}


----------------解决方案--------------------------------------------------------
我用的是MSC.还是看不懂,有没有简单的易懂的算法,谢谢!
----------------解决方案--------------------------------------------------------

这个已经是最简单的模式匹配算法了.

看看朴素模式匹配的思想,再根据这个程序理解一下,当然这个程序我引入succ是为了提前结束提高效率.


----------------解决方案--------------------------------------------------------
如果我没记错,,KMP才是最有效的匹配算法,,不过我没弄懂就是
----------------解决方案--------------------------------------------------------
以下是引用w362034710在2006-12-5 10:06:22的发言:
如果我没记错,,KMP才是最有效的匹配算法,,不过我没弄懂就是

说的不错.


----------------解决方案--------------------------------------------------------
  相关解决方案