zsombi0806

eHázi q/26594 v2

Nov 1st, 2019 (edited)
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. stairs = (20, 30, 50, 30)
  2. max_step = 100
  3.  
  4. def main(stairs, max_step):
  5.     known = dict()
  6.     p = possibilities(stairs, max_step, known)
  7.     print(p)
  8.  
  9. def possibilities(stairs, max_step, known):
  10.     if (len(stairs) == 1 and stairs[0] <= max_step) or len(stairs)==0:
  11.         return 1
  12.    
  13.     p = 0
  14.     for i in range(1,len(stairs)+1):
  15.         down = stairs[:i]
  16.         up= stairs[i:]
  17.  
  18.         if sum(down) > max_step:
  19.             break
  20.         elif up in known:
  21.             p += known[up]
  22.         else:
  23.             p_up = possibilities(up, max_step, known)
  24.             known[up] = p_up
  25.             p += p_up
  26.     return p
  27.  
  28. main(stairs, max_step)
Add Comment
Please, Sign In to add comment