KMP演算法計算出現次數(包含重疊部分)

2021-10-10 22:27:59 字數 573 閱讀 5718

kmp演算法

返回模式串在文字串**現的次數。

例如:"abdabdababdab"中 "abdab"在[0,4][3,7][8,12]出現,則返回3

主要的改動在kmp函式中的while迴圈

#include

using

namespace std;

void

getnext

(const

char

* ps,

int* next)

else

j = next[j];}

}int

kmp(

const

char

* t,

const

char

* p)

else

j = next[j]

;//模式串p向右移動j-next[j]位,從p中下標為next[j]的位置開始匹配

if(j == plen)

}return times;

}int

main()

計算出出現次數最多的字串

因為這個題目意思太簡單了,看一下案例就懂了便不再描述了。注意有多組測試案例,每組案例的字串數量n 0輸入 5 green redblue redred 3pink orange pink0 輸出 red pink 解題 include include includeusing namespace s...

浮點數精度計算出現的問題

當我們儲存浮點數後再讀取浮點數,結果可能會出現一點點偏差。比如 float ft1 20.2 這樣編譯器會報警告,因為小點數預設為double cstring str str.format t f ft1 這時候ft1的值等於20.200001。float ft2 20.8 cstring str ...

組合數計算出現浮點誤差的問題python

首先組合數公式c n,m 可以簡單化簡,例如c 8,5 c 8,3 8 7 6 3 2 1 m或n m為幾,分式上下就有幾 個數。def cni n,i 原函式 minni min i,n i c 8,5 c 8,3 減少下面迴圈次數 result 1 for j in range 0,minni ...