NOIP2016提高組初賽 回文子串行

2022-06-04 20:27:07 字數 911 閱讀 4365

#include using

namespace

std;

int lps(string seq, int i, int

j) int

main()

輸出:_________

【乙個計算最長回文子串行的例程,值得一背】

首先是關於掃瞄的事項

一是可能有的時候會比較難理解為什麼當 i == j 時對回文子串行的貢獻為1,例如:abcda,除了頭尾的a對回文子串行的貢獻為2,中間的bcd不管是怎麼掃瞄,對於a _ a 這個回文子串行來講,b或c或d是肯定可以填入其中的空格中的,所以對回文子串行的貢獻為1

二是要明白遞推公式,除了掃瞄到相等的項時一定是最長回文子串行中的一部分且對其貢獻為2外,那麼,當掃瞄到不相等的兩個項時,該怎麼想呢?

對於不相等的兩個項 [ i ] [ j ] ,其回文子串行的長度無非兩種情況

①先掃瞄 [ i ][ j-1 ] 所得的回文子串行長度比較長  ②先掃瞄 [ i-1 ][ j ] 所得的回文子串行長度比較長

那麼我們分別遞迴兩種情況,然後比較這兩種情況中哪乙個回文子串行更長,進而可以求出最長的回文子串行啦

然後是一些關於閱讀程式的心得

首先,讀程式建議從主程式開始讀,先大概了解程式後在看函式往往有奇效(反正我是這樣感覺的)

其次,當你閱讀程式時,不建議只是掃一遍,最好是能把相應步驟的關鍵點和一些比較難一眼看出來意義的段落加上注釋(可能是因為我還是乙個蒟蒻才需要這樣做吧......)

最後,當你對一段程式迷惑時,請你:跟著程式跑一遍-->用編譯器再跑一遍-->對於自己有疑慮的點,請造出來然後用編譯器跑一遍

總之,多動手。

學oi就是乙個積累和學習的過程,碼得越多,看的越多,就懂得越多。

小結 初賽NOIP2016提高組

92分拿下初賽!這總不能掛了吧 這次總體難度不算太高,因此還不錯,恩。發車!心裡還有些小激動才怪 呢!一路沒有睡覺的打算,只顧腐敗。人員分布分二級階梯 被分作了打殺黨和聊天黨。後面一堆人忙著複習三國歷史,而前面則沉浸於互相調侃之中無法自拔。作為一名合格的司機,怎麼能浪費這大好的開車時光呢?一路 不久...

NOIP2016提高組總結

這次noip可以用幾個字來形容 浪的飛起,頹的不行。中午從校門出發,在車上睡了半個車程。4 00左右,霧比較大,遠處的小蠻腰若隱若現。你好,廣州。5 00,symbol叫我們去看考場,結果被拒在門外,然後大家都散了。我與其它幾位小夥伴匆匆吃完飯,回到酒店,該看電視看電視,中途開會,提醒我們一些注意事...

NOIP2016 提高組 總結

這是倒數第三次noip了。今年我初三。去年的傷痕還未褪去,我在比賽前意識到,當務之急其實是鞏固基礎而非深究一些難題。於是賽前兩周,我認真讀了白書的前面部分,尤其重點練習了dp。dp作為基礎演算法之一,其靈活性極高,所以可以出得很難,也是各種比賽的寵兒。練好dp是尤為重要的。賽前好幾場模擬賽都做得很爛...