當前位置:首頁 » 編程語言 » 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;
}