題目來源:
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]
的個數 。
一個個比對過去,如果字首比對,并且加上目前字母後,前面比這個字母小的,相等的,大于的數字個數都相等,就是比對
。
代碼如下: