Problem 117
http://projecteuler.net/index.php?section=problems&id=117
そのままDP。
import Data.Array.IArray measure n = mArr!n where mArr = listArray (0,n). map m $[0..n]::Array Int Integer m 0 = 1 m x = sum.map m'.zipWith (-) (repeat x) $ [1..4] m' x | x < 0 = 0 | x >= 0 = mArr!x main = print.measure$ 50
というか、高々4つ前の値しか必要ないので、DPも必要ない?
ないね。
import Data.List measure' = 0:0:0:1:zipWith4 add m0 m1 m2 m3 where add a b c d = a+b+c+d (m0:m1:m2:m3:_) = iterate tail measure' main = print$measure'!!53