我试图解决一个面试问题:在N * N矩阵中的所有可能的路径 - 蟒蛇
给定一个N * N矩阵,假设你开始在左上角单元格(即0,0)。您可以向右或向下移动,并且必须前往右下角的单元格。获取小于给定值的最大值。例如,假设3 * 3矩阵,给定值为
5
。
0 1 2
2 1 2
3 2 1
optimal path is 0 -> 1 -> 1 -> 2 -> 1 = 5
我开始使用递归的编码,但答案是不正确的。有什么建议么?
def findAllPaths(currX, currY, path, grid, sum):
#print currX, currY
if currX == len(grid)-1:
i = currY
temp = 0
while i < len(grid):
path = path + str(grid[currX][i])
temp += grid[currX][i]
i += 1
sum.append(temp)
#print 'first loop', sum, path
return
if currY == len(grid)-1:
i = currX
temp = 0
while i < len(grid):
path = path + str(grid[i][currY])
temp += grid[i][currY]
i += 1
sum.append(temp)
#print 'second loop', sum, path
return
#print currX, currY
#path = path + str(grid[currX][currY])
findAllPaths(currX+1,currY,path,grid, sum)
findAllPaths(currX, currY+1,path,grid, sum)
return sum