天天看點

kmp變形 如何判斷第i個字元是否比對函數 hdu 4749

題目來源:

http://acm.hdu.edu.cn/showproblem.php?pid=4749

題意: 

題意:給出兩個數字串A、B。問A中有多少不相交的子串a能比對B。比對的意思是a中任意兩個位置i和j的大小關系和B的這兩個位置的大小關系是一樣的。

思路:若是完全一模一樣的比對的話那麼KMP是很好了解的。那麼對于上述的比較方式怎麼比較兩個串相等呢?對于a的位置j和B的位置i(j

< i),我們比較aa(1,2 ,...j) 與bb(i - j + 1 , ... , i)這兩個串中,j之前aa中小于(或

等于 或 大于)a[j] 的個數, 是否  ==   與  i之前bb中小于(或 等于 或大于) b[i]

的個數  。 

一個個比對過去,如果字首比對,并且加上目前字母後,前面比這個字母小的,相等的,大于的數字個數都相等,就是比對

代碼如下: