hdu 3886 Final Kichiku “Lanlanshu” (數位dp)
給出一個字符,只含'/','-' ,'' ,表示著一個數上的各位數字按相應字符上升,不變或下降,問【a,b】區間內這樣的數有多少個?
數組很好設,dp[i][j][k]表示處理到第i位,它對應的字符是第j位,它前面的數字是k的種類數。
令我糾結好久的是,我起初設的dp[i][j][k]表示處理到第i位時,它的上一位對應的字符是第j位,它的上一位數字是k的種類數,這樣可能會導致一個'/'只有一個數字,但是題目要求是'/'’-‘''必須是至少兩個相鄰的數字滿足。
如果把j理解為當前第i位應該對應的是第j個字符,那麼只需拿當前取的數字num和k相比是否滿足s[j]這種關系,若滿足,就繼續遞歸下一個字符,若不滿足,就拿num和k相比是否滿足s[j-1]關系,如果滿足,就繼續遞歸s[j]這種關系。
從這題可以得出結論,設置狀態的時候,要針對當前這一位,盡量讓當前這一位的選擇是確定的。
#include
#include
#include