Advertisement
ZEdKasat

Grid Unique Paths

May 28th, 2021
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.63 KB | None | 0 0
  1. # from math import factorial as f
  2. class Solution:
  3.     # @param A : integer
  4.     # @param B : integer
  5.     # @return an integer
  6.    
  7.     hmap = {0:1, 1:1}
  8.     def factorial(self, n):
  9.         if n not in self.hmap:
  10.             ans = n * self.factorial(n-1)
  11.             self.hmap[n] = ans
  12.         return self.hmap[n]
  13.  
  14.     # def countPaths(self, X, Y, x, y):
  15.     #     if x == X-1 and y == Y-1:
  16.     #         return 1
  17.     #     elif x == X-1:
  18.     #         return self.countPaths(X, Y, x, y+1)
  19.     #     elif y == Y-1:
  20.     #         return self.countPaths(X, Y, x+1, y)
  21.     #     else:
  22.     #         return self.countPaths(X, Y, x+1, y) + self.countPaths(X, Y, x, y+1)
  23.    
  24.     # def countPaths(self, x, y):
  25.     #     if x == 1 or y == 1:
  26.     #         return 1
  27.     #     else:
  28.     #         return self.countPaths(x-1, y) + self.countPaths(x, y-1)
  29.            
  30.    
  31.     def uniquePaths(self, A, B):
  32.        # return self.countPaths(A, B, 0, 0)
  33.        #hmap = {0:1, 1:1}
  34.        ##return self.countPaths(A, B)
  35.        #x = min(A, B)-1
  36.        #y = max(B, A)-1
  37.        #xf = self.factorial(x)
  38.        #yf = self.factorial(y)
  39.        #return self.factorial(x+y)//(xf*yf)
  40.        
  41.         total = A + B - 2
  42.         smaller = min(A - 1, B - 1)
  43.         nom = 1
  44.         den = 1
  45.         for i in range(smaller):
  46.             nom *= total - i
  47.             den *= i + 1
  48.         return nom//den
  49.        
  50.        # return self.factorial(A+B-2)/((self.factorial(A-1))*(self.factorial(B-1)))
  51.        
  52.        #grid = [[1 for x in range(B)] for x in range(A)]
  53.        #for r in range(1, A):
  54.        #    for c in range(1, B):
  55.        #        grid[r][c] = grid[r-1][c] + grid[r][c-1]
  56.        #return grid[A-1][B-1]
  57.        
  58.        
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement