1樓:匿名使用者
其next陣列值為[-1,0,0,1,0]
2樓:承冷菱
*電腦最擅長的就是不厭其煩地重複做某一項工作成千上萬遍,這就是通過迴圈控制來完成的。vb支援的迴圈結構有:
用do…loop迴圈重複執行某個語句塊,且重複次數不定,通常以條件決定是否繼續執行迴圈。迴圈條件必須是一個值為true或false的表示式。
do while
迴圈語句序列
loop
當程式執行到這個do迴圈時會首先測試迴圈條件。如果迴圈條件為false,則跳過迴圈語句序列。如果迴圈條件為true,則程式將進入迴圈體執行迴圈語句序列,執行語句後退回到do while語句測試迴圈條件。
do…loop的另一種形式是先執行語句,然後在每次執行之後測試迴圈條件,這種形式能保證迴圈中的語句至少執行一次。
do迴圈語句序列
loop while 迴圈條件
在不知道迴圈要執行幾次的情況下,使用do迴圈比較好,但是,在知道迴圈次數的情況下,最好使用for…next迴圈結構。for迴圈有點像銀行中的點鈔機,使用一個叫做計數器的變數,每重複一次迴圈之後,計數器的值就會自動增加或者減少。計數器、初值、終止值和增量都是數值型的。
增量引數可正可負,如果增量為正,初值比較小於等於終止值,否則不能執行迴圈體內的語句,如果增量為負,初值則必須大於等於終止值,這樣才能執行迴圈體。如果沒有設定step引數,則增量預設值為1。設定計數器等於初值,測試計數器是否大於終止值,是的話,則退出迴圈,執行迴圈語句,計數器增加增量,重複上述步驟。
希望我能幫助你解疑釋惑。
已知串s=『aaab』,其next陣列值為( )
3樓:
答案a序號:1 2 3 4
陣列:a a a b
next: 0 1 2 3
注意上邊序號、陣列和next的對應關係
求next值的過程:
前兩位:next陣列值前兩位一定為01,即aaab中的前兩位aa對應01,如上表中next第1,2位為0和1.其實這就可以選出答案了.
第三位:3a前面是2a(2a表示序號為2的a),2a的next陣列值為1,找到序號為1的字元, 即1a,將2a和1a相比,兩者相同,都是a,則3a的next值為2a的next值加1,即2;
第四位:4b前3a的next為2,找到序號為2的字元, 即2a, 將3a與2a相比,二者相同,則其next值為3a的next加1,為3.
結果為0123,選a
如果比較的時候碰到與前一位字元「不同」怎麼辦?如求下列序號4的next值
序號: 1 2 3 4
陣列: a a b a
next: 0 1 2 1
以前一位的next值為序號,找到這個序號對應的字元,再進行比較,4a前一位是3b, next值為2, 找到序號2對應的2a, 比較3b和2a, 兩者不同, 再重複這一步驟, 找到2a的next值是1,比較3b和1a, 不同, 那麼所求的4a的next就是1, 如果相同就是2a的next值加1,為2。
做個練習:xyxyyxxyx,求它的next陣列?
答案是011231223,你做對了嗎?
4樓:牟博容
正確答案:a
next陣列的求解方法是:第一位的next值為0,第二位的next值為1,後面求解每一位的next值時,根據前一位進行比較。
首先將前一位與其next值對應的內容進行比較,如果相等,則該位的next值就是前一位的next值加上1;
如果不等,向前繼續尋找next值對應的內容來與前一位進行比較,直到找到某個位上內容的next值對應的內容與前一位相等為止,則這個位對應的值加上1即為需求的next值;
如果找到第一位都沒有找到與前一位相等的內容,那麼需求的位上的next值即為1
5樓:匿名使用者
4.已知串s=『aaab』,其next陣列值為( d )。【西安電子科技大學 1996 一、7 (2分)】
a.0123 b.1123 c.1231 d.1211
6樓:w依然愛
這題選a 。樓下的解答錯誤
已知串s="aaab",在kmp演算法中其next陣列值為多少?
7樓:開心00最好
你也是在學資料結構吧,next陣列是0 1 2 3
已知一個模式串t="aaaba",則在kmp演算法中,其next陣列中的值是 (
8樓:
abaabcac
01122312
前兩個字母next序列分別為01,直接寫上
第三個"a" 時,它前一個字母為b,從頭開始字母為a, a!=b所以為1
第四個"a" 時,前字母為a,從頭開始字母為a,a=a,所以值為1+1=2(相等時為串長加1)
第五個"b",前個字母為a,從頭開始a,a=a,為2
第六個"c",前個字母為b,再往前是a,ab,從頭開始ab串,ab=ab,因此值為2+1=3
第七個字母為"a",前個字母為c,與從頭開始的第一個字母不相等,所以為1
第八個為"c",前個字母為a,與開始第一個字母相等,因此為2
則返回邏輯「真(true)」,反之返回邏輯「假(false)」。
串"ababaaababaa"的next陣列為( ). 求解釋,本題選c
9樓:油條大巴
計算字串的next函式值,可以參考"kmp模式匹配演算法".
計算過程:
下標j 1 2 3 4 5 6 7 8 9 10 11 12
字串 a b a b a a a b a b a a
next[j] 0 1 1 2 3 4 2 2 3 4 5 6
1) 當j=1時,固定就是next[1]=0;
2) 當j=2時,由1到j-1的字串是"a",屬於其他情況,固定就是next[2]=1;
3) 當j=3時,由1到j-1的字串是"ab",字首字元"a"與字尾字元"b"不相等,
屬於其他情況,所以,next[3]=1;
4) 當j=4時,由1到j-1的字串是"aba",字首字元"a"與字尾字元"a"相等,
也就是有1個字元相等,所以,next[4]=1+1=2;
5) 當j=5時,由1到j-1的字串是"abab",字首字元"ab"與字尾字元"ab"相等,
也就是有2個字元相等,所以,next[5]=2+1=3;
6) 當j=6時,由1到j-1的字串是"ababa",字首字元"aba"與字尾字元"aba"相等,
也就是有3個字元相等,所以,next[6]=3+1=4;
7) 當j=7時,由1到j-1的字串是"ababaa",字首字元"a"與字尾字元"a"相等,
也就是有1個字元相等,所以,next[7]=1+1=2;
8) 當j=8時,由1到j-1的字串是"ababaaa",字首字元"a"與字尾字元"a"相等,
也就是有1個字元相等,所以,next[8]=1+1=2;
9) 當j=9時,由1到j-1的字串是"ababaaab",字首字元"ab"與字尾字元"ab"相等,
也就是有2個字元相等,所以,next[9]=2+1=3;
10)當j=10時,由1到j-1的字串是"ababaaaba",字首字元"aba"與字尾字元"aba"相等,
也就是有3個字元相等,所以,next[10]=3+1=4;
11)當j=11時,由1到j-1的字串是"ababaaabab",字首字元"abab"與字尾字元"abab"相等,
也就是有4個字元相等,所以,next[11]=4+1=5;
12)當j=12時,由1到j-1的字串是"ababaaababa",字首字元"ababa"與字尾字元"ababa"相等,
也就是有5個字元相等,所以,next[12]=5+1=6;
所以,答案選 c.011234223456
如何求字串next陣列值
10樓:大雄和哆啦a夢遊戲
已知string str = "aaab"; 其next陣列值結果為 0123。
已知string str = "babab"; 其next陣列值結果為 01123。
計算過程:
計算3b (3b表示座標為3的b):先比較3b的前一位2a,2a的next值為1,將2a和座標為1的串1b比較,不相等,因為1b是第一位,所以最終3b的next值為1。
計算4a:先比較4a的前一位3b,3b的next值為1,將3b和座標為1的串1b比較,相等,所以最終4a的next值為(3b的next值 + 1)= 2。
計算5b:同理計算4a,可得計算結果為2+1=3。
擴充套件資料
next的優點
在失配後,並不簡單地從目標串下一個字元開始新一輪的檢測,而是依據在檢測之前得到的有用資訊即next陣列中記錄的資訊,直接跳過不必要的檢測,從而達到一個較高的檢測效率,關於它的講解、實現和優化網上。
11樓:
next[1]=0,next[2]=1;
後面求解每一位的next值時,根據j的前一位進行比較,令k=next[j-1];
比較s[j-1]與s[k],若相等,則next[j]=k+1;若不相等,令k=next[k],若k!=0,重複3步驟,直到next[k]=0,next[j]=1.
12樓:
next陣列的求解方法是:第一位的next值為0,第二位的next值為1,後面求解每一位的next值時,根據前一位進行比較。首先將前一位與其next值對應的內容進行比較,如果相等,則該位的next值就是前一位的next值加上1;如果不等,向前繼續尋找next值對應的內容來與前一位進行比較,直到找到某個位上內容的next值對應的內容與前一位相等為止,則這個位對應的值加上1即為需求的next值;如果找到第一位都沒有找到與前一位相等的內容,那麼需求的位上的next值即為1。
13樓:千木
????看不明白。語文沒學好。。
已知模式串t='abcaababcabcab',則它的next函式值為 20
14樓:雲丶痕無跡
如果是 陣列t的話,next的值為字串的第一個字母的在 記憶體中的 指標地址。
15樓:小雷小雷小雷子
01112232345345,第一個固定為零,其他=該項前的元素的相等的字首和字尾的長度+1,
16樓:楠楠
0111223232345345
kmp演算法中的next陣列值的疑問
17樓:匿名使用者
問題1陣列下標是從1開始計算 問題2陣列下標從0開始
18樓:
abaabcac
01122312
前兩個字母next序列分別為01,直接寫上
第三個"a" 時,它前一個字母為b,從頭開始字母為a, a!=b所以為1
第四個"a" 時,前字母為a,從頭開始字母為a,a=a,所以值為1+1=2(相等時為串長加1)
第五個"b",前個字母為a,從頭開始a,a=a,為2
第六個"c",前個字母為b,再往前是a,ab,從頭開始ab串,ab=ab,因此值為2+1=3
第七個字母為"a",前個字母為c,與從頭開始的第一個字母不相等,所以為1
第八個為"c",前個字母為a,與開始第一個字母相等,因此為2
則返回邏輯「真(true)」,反之返回邏輯「假(false)」。
matlab裡已知輸入x,假如高斯白噪聲,其功率為訊號功率1 10,那輸出訊號y如何求
y randn 1,2500 y y std y y y mean y a 0 b sqrt 5 y a b y 就得到了 n 0,5 均值為0,方差為5的高斯白噪聲序列。matlab中產生高斯白噪聲的兩個函式 matlab中產生高斯白噪聲非常方便,可以直接應用兩個函式,一個是wgn,另一個是awg...
已知公鑰是字串,怎麼生成RSAPublicKey
基本 是這樣的,但是你貼出來的那個公鑰有問題,解析不了。我用隨機產生的公鑰是可以還原的。java code?import java.security.keyfactory import java.security.publickey import java.security.spec.keyspec...
已知水的比熱容是42103Jkg其物理意
略 2.1 106 不變 知道外界氣壓為一標準大氣壓,水的沸點 末溫 為100 又知道水的初溫 水的質量和水的比熱容,利用吸熱公式求水吸收的熱量 達到沸點後,水繼續吸熱沸騰,但溫度不變 依據比熱容的概念,水的比熱容的物理意義是 1k 溫度升高 或降低 1 所吸收 或放出 的熱量是4.2 103j q...