再談POJ 1953 高手給出O n 演算法

2021-05-04 06:39:31 字數 350 閱讀 6588

題目大意:

n為二進位制數列,要求不能出現連1,求數列可能種數?

我原來寫了個遞迴演算法,結果tle,複雜度大概是o(2^n)。

後來,別人寫出了o(n)的演算法。

綜合比較來看,我的演算法相當於對所有符合條件的數列情形進行了遍歷,每次函式遞迴呼叫返回時都相當於找到了這樣乙個數列,甚至可以寫出此數列。而這是題目沒有要求的,屬於做了多餘的工作。

而後面那個o(n)的演算法,則直奔主題,直接從數列種數考慮,得出遞推公式,沒有做一點多餘工作,自然複雜度大大降低。

演算法這東西,內在是因果的。

另外感慨一下遞迴的可怕n<45都輕易的tle了。

以後如果遇到類似情況,可以試圖化遞迴為遞推。

POJ 1953 解題報告

這道題是簡單dp題。用zeros i 表示長度為i的 合法 序列以0開頭的個數,同理ones i 表示長度為i的合法序列以1開頭的數目,而nums i 表示長度為i的合法序列的數目,於是有nums i zeros i ones i 我們可以遞推地求所有的zeros和ones。從i 1 到 i,由於0...

再談poj2965(高效演算法)

在列舉分類中已有暴力列舉的方法解這道題。之後在網上看到大神的高效演算法,膜拜之。故copy在此。證明 要使乙個為 的符號變為 必須其相應的行和列的運算元為奇數 可以證明,如果 位置對應的行和列上每乙個位置都進行一次操作,則整個圖只有這一 位置的符號改變,其餘都不會改變.設定乙個4 4的整型陣列,初值...

poj 1953 dp 無連續1的01串個數

題意 問長度為n的無連續1出現的01串有多少個?思路 簡單dp。思路1 dp i 0 表示以0結尾長度為i的串的個數 dp i 1 表示以1結尾長度為i的串的個數。則轉移方程為dp i 0 dp i 1 0 dp i 1 1 和dp i 1 dp i 1 0 最終對於長度為n的串輸出dp n 0 d...