当前位置:首页 » 编程语言 » c语言bf算法
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言bf算法

发布时间: 2023-05-17 19:19:07

1. 关于BF算法的c语言实现

我修改的程序都是把S[0] T[0]转换为strlen(S) strlen(T)函数来实现的
为什么不把strlen(S),strlen(T)分别赋予S[0],T[0],害怕覆盖原来的数据吗?没有必要,他们原本就是来存储这个数据的,君不见,它们都不参与匹配!他们的初始化应该在这个函数之外完成,在每次数组长度改变后,就及时设置,换句话说,在调用这个函数之前,应该保证他们已经设置正确,
在打印时,应该从第二个元素S[1]或T[1]开始,因为S[0],T[0]不再是数组的实际内容
不知道我有没有表述清楚,
一般,数组的第一个元素存放实际的内容,而你这里并不是这样,数组的第一个元素不再是数组的实际内容,而是数组长度
==================================================================
补充;
比较大小时S[0]的值不就变成了整形的ASCII码值了么?
1.整数就是整数,没有ASCII码,ASCII码是针对字符的
2.在C中,整数赋予字符变量是合法的
2.在C中,字符与整数的关系运算也是合法的,当你要把一个字节的数解释成字符的时候,它就是字符,可他存储的还是数啊,就把它当整数用吧,毕竟我们没有打算打印它,当然它能表示的整数太少了,所以数组长度受到限制
如果你要以字符显示它,那它当然是那个整数所对应的字符,如果那是可打印字符的话

2. c语言字符串操作演示程序设计求大神= =

(1)字符串初始化InitString。--------->InitString()
(2)字符串输入InputString。--------->InputString()
(3)字符串输出OutputString。--------->OutputString()
(4)给定字符串,求串长StringLen。--------->StringLen()
(5)给定位置,串插入InsertStringbyLocation。--------->InsertStringbyLocation()
(6)BF算法查找字符串BFSear1ch。--------->BFSear1ch()
(7)KMP算法查找字符串KMPSearch。--------->KMPSearch()
你的理解弊或罩有问题,剩下的应团则该怎么做不用我说了,上面的函租闹数都是没有返回值和参数的,这个要你自己定了

3. 数据结构 BF算法

建议动手画一画会比较直观
i,j是这里作位置指针 i指向SString S中的一个位置 j指碰慧向SString T的一个位置
while后的括号笑轿答中是循环继续的条件
很多地方字符串本身可以理解成一个字符构成的数组
S[0]这里指0号位置的内容 这里用既然用i,j和这个0#内容比较来帆拆确定何时结束循环
即可以把0号位置的内容理解为i最终的移动位置 j同理
这里++i和i++皆可 先加后加不影响 因为本句里已经没有再用到i的值了
最后一句 如果j>T[0]导致循环结束,此时返回i,这里i是一个在S中移动最终位置
与T[0]的差 相当于两个最终位置间的距离
另外 一般用return 0 表示正常返回

强烈建议动手画 文字表述不能很直观

4. 如何用C语言或者C++在给定文本中查找并定位字符串

http://ke..com/view/4462643.htm
这里有答案。。。你要是还不会的话找我。。QQ群:110675294里面有人会给你回答的

5. 一个简单的小程序 C语言 BF算法

引用没问题,就是BF函数错了。

#include<stdio.h>
#include<string.h>
#include<iostream>//.h去掉
usingnamespacestd;//命名空间

intBF(charS[],charT[])
{
inti,j,start;
i=0;
j=0;
start=0;
while(S[i]!=''&&T[j]!='')//T[i]改为T[j]
{
if(S[i]==T[j])
{
i++;j++;
}
else{
start++;
i=start;
j=0;
}
}
if(T[j]=='')
returnstart+1;//start+1,因为数组从0开始计数
else
return0;
}

intmain()
{
charS[1000],T[1000];
intstart;
printf("输入主串: ");
scanf("%s",S);
printf("%s ",S);
printf("输入子串: ");
scanf("%s",T);
printf("%s ",T);
start=BF(S,T);
cout<<"主串与子串在主串的第"<<start<<"个字符匹配"<<endl;

}

6. BF算法的C语言实现:

int Index(SString S,SString T,int pos)
{ /* 返回子串T在主串S中野磨如第pos个字符颂启之后的位置。若不存在,则函数值为0。 */
/* 其中,T非游源空,1≤pos≤StrLength(S)。算法4.5 */
int i,j;
if(1<=pos&&pos<=S[0])
{
i=pos;
j=1;
while(i<=S[0]&&j<=T[0])/*S[0],T[0]中存放的为串长*/
if(S[i]==T[j]) /* 继续比较后继字符 */
{
++i;
++j;
}
else /* 指针后退重新开始匹配 */
{
i=i-j+2;
j=1;
}
if(j>T[0])
return i-T[0];
else
return 0;
}
else
return 0;
}