# have to step (m-1) on horizontal axis, step (n-1) on vertical axis.classSolution(object):defuniquePaths(self,m,n):""" :type m: int :type n: int :rtype: int """returnself.unique(m,n,path={})# must set path outside. can't set path inside a function, or it will initiate every time.defunique(self,m,n,path):ifm==1orn==1:return1else:if(m-1,n)inpath:ver=path[(m-1,n)]else:ver=self.unique(m-1,n,path)if(m,n-1)inpath:hor=path[(m,n-1)]else:hor=self.unique(m,n-1,path)step=ver+horpath[m,n]=stepreturnstepif__name__=="__main__":answer=Solution()printanswer.uniquePaths(33,12)