机器人位于 amxn 网格的左上角(在下图中标记为“开始”)。
机器人只能在任何时间点向下或向右移动。机器人正试图到达网格的右下角(在下图中标记为“完成”)。
有多少可能的唯一路径?
我想出了解决方案,并用我的母语编程语言 C++ 编写了代码。
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>> matrix(m, vector<int>(n, 0));
for (int i = 0; i < m; i++) {
matrix[i][0] = 1;
}
for (int j = 0; j < n; j++) {
matrix[0][j] = 1;
}
for(int i = 1; i < m; i++) {
for(int j = 1; j < n; j++) {
matrix[i][j] = matrix[i][j-1] + matrix[i-1][j];
}
}
return matrix[m-1][n-1];
}
};
二维向量被初始化为arr[m][n]
在学习 Python 时,我决定也用 Python 来解决它。我遇到了一个荒谬的问题。这里,
arr = [[0 for x in range(n)] for y in range(m)]
我将二维数组初始化为
arr = [[0 for x in range(m)] for y in range(n)]
而且,我得到的错误列表索引超出范围。我真的搞砸了从干草中找出这根针,但无论如何我明白了。你能解释一下为什么即使一切都一样,行和列之间也会发生这些冲突吗?
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
if m == 0 or n == 0:
return 0
arr = [[0 for x in range(n)] for y in range(m)]
for i in range(m):
arr[i][0] = 1
for j in range(n):
arr[0][j] = 1
for i in range(1,m):
for j in range(1,n):
arr[i][j] = arr[i][j-1] + arr[i-1][j]
return arr[m-1][n-1]
下面是题目链接供参考:Unique paths-leetcode
心有法竹
相关分类