Guest User

Untitled

a guest
May 25th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.59 KB | None | 0 0
  1. import qualified Data.Array as Array
  2.  
  3.  
  4. burstDP :: [Int] -> Int
  5. burstDP l = go 1 len
  6. where
  7. go left right | left <= right = maximum [ds Array.! (left, k-1)
  8. + ds Array.! (k+1, right)
  9. + b (left-1)*b k*b (right+1) | k <- [left..right]]
  10. | otherwise = 0
  11. len = length l
  12. ds = Array.listArray bounds
  13. [go m n | (m, n) <- Array.range bounds]
  14. bounds = ((0,0), (len+1, len+1))
  15. l' = Array.listArray (0, len-1) l
  16. b i = if i == 0 || i == len+1 then 1 else l' Array.! (i-1)
Add Comment
Please, Sign In to add comment