我试图解决我的算法类的作业问题,该问题涉及从m x n矩阵的左上角移动到右下角。我的束缚(与SO上的大多数帖子不同)是我可以向右,向下或对角线向下移动。我已经通过将先前的子问题存储在m×n矩阵中来实现动态编程的尝试,但是我无法通过教师提供的测试用例。不幸的是,我不知道输入,也无法打印输出,所以我想知道可能会丢失哪些边缘情况?我确保m,n必须大于0才能输出正确的值,我知道正在传入一个整数(这就是为什么我没有isinstance(m,int)检查)
def allPossibleRoutes(m, n):
if m == 1 or n == 1:
return 1
if m <= 0 or n <= 0:
return 0
matrix = [[0 for i in range(0,n)] for j in range(0,m)]
for i in range(0,m):
matrix[i][0] = 1
for i in range(0,n):
matrix[0][i] = 1
for i in range(1,m):
for j in range(1, n):
matrix[i][j] = matrix[i-1][j] + matrix[i][j-1] + matrix[i-1][j-1]
return matrix[m-1][n-1]
我会感激任何帮助,因为我已经被困在这几天了,而且无法找到我错过的优势!