亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 和 C++ 二維數組初始化之間。這是什么 ?為什么?

Python 和 C++ 二維數組初始化之間。這是什么 ?為什么?

LEATH 2023-02-07 10:53:21
機器人位于 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
查看完整描述

1 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

在你的 C++ 代碼中:

vector<vector<int>> matrix(m, vector<int>(n, 0));

您正在創建一個向量m向量,每個向量包含n初始化為 0 的元素。這就像一個由m行 xn列組成的二維矩陣。

Python 中的等效代碼是:

arr = [[0 for x in range(n)] for y in range(m)]

這是一個列表理解。對于具有 C++ 背景的人來說,此語法從后往前看,但列表理解的格式是:

[ expression for item in list if conditional ]

0因此,在您的情況下,對于范圍內的每個索引,m您都會創建一個包含零的內部列表n,即mxn矩陣。

這段代碼:

arr = [[0 for x in range(m)] for y in range(n)]

不等同于您的 C++ 代碼。它生成一個列表n列表,每個列表都包含m零,即nxm矩陣。因此你得到了錯誤。


查看完整回答
反對 回復 2023-02-07
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號