Advertisement
nullzero

adv mic

Mar 19th, 2013
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.34 KB | None | 0 0
  1. #######################################################
  2. """
  3. This is an O(n^3) algorithm. ==> Top down
  4. """
  5.  
  6. def func(a, b):
  7.     if a == b: return ...
  8.     if solved[(a, b)]: return sol[(a, b)]
  9.     solved[(a, b)] = True
  10.    
  11.     ans = INF
  12.    
  13.     for k in xrange(a, b):
  14.         ans = min(ans, func(a, k) + func(k + 1, b))
  15.    
  16.     sol[(a, b)] = ans
  17.    
  18. #######################################################
  19. """
  20. This is an O(n^3) algorithm. ==> Bottom up
  21. """
  22.  
  23. # base case
  24. for i in xrange(0, n):
  25.     sol[(i, i)] = ...
  26.  
  27. for w in xrange(1, n):
  28.     for i in xrange(0, n - w):
  29.         j = i + w
  30.         ans = INF
  31.        
  32.         for k in xrange(i, j):
  33.             ans = min(ans, sol[(i, k)] + sol[(k + 1, j)])
  34.        
  35.         sol[(i, j)] = ans
  36.  
  37. #######################################################
  38. """
  39. This is an O(n^2) algorithm. ==> Bottom up + adv mic
  40. """
  41.  
  42. # base case
  43. for i in xrange(0, n):
  44.     sol[(i, i)] = ...
  45.     K[(i, i)] = i
  46.  
  47. for w in xrange(1, n):
  48.     for i in xrange(0, n - w):
  49.         j = i + w
  50.         ans = INF
  51.        
  52.         for k in xrange(K[i][j - 1], K[i + 1][j]):
  53.             ans = min(ans, sol[(i, k)] + sol[(k + 1, j)])
  54.             if ans == sol[(i, k)] + sol[(k + 1, j)]:
  55.                 K[i][j] = k
  56.        
  57.         sol[(i, j)] = ans
  58.  
  59. #######################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement