在此處輸入影像描述我在迷宮問題中遇到老鼠的運行時錯誤。你能告訴我哪里出錯了嗎?
問題:
考慮將一只老鼠放置在 N * N 階方陣中的 (0, 0) 處。它必須在 (N - 1, N - 1) 處到達目的地。找出老鼠從源頭到目的地所能走的所有可能路徑。老鼠可以移動的方向是“U”(上)、“D”(下)、“L”(左)和“R”(右)。矩陣中一個單元格的值為 0 表示它被阻擋,老鼠不能移動到它,而矩陣中的一個單元格的值為 1 表示老鼠可以穿過它。注意:在一條路徑中,不能多次訪問任何單元格。如果源單元格為 0,則大鼠無法移動到任何其他單元格。
代碼:
class Solution:
def findPath(self, m, n):
# code here
if m[0][0]==0 or m[n-1][n-1]==0:
return []
list_of_ans=[]
vis=[]
ans=''
vis=[[0 for _ in range(n)]for _ in range(n)]
list_of_ans=self.search(n,m,ans,0,0,list_of_ans,vis)
list_of_ans.sort()
return list_of_ans
def search(self,n,m,ans,i,j,list_of_ans,vis):
if i==n-1 and j==n-1:
list_of_ans.append(ans)
return list_of_ans
if vis[i][j 1]==0 and j 1<n and m[i][j 1]==1:
vis[i][j 1]=1
ans = 'R'
list_of_ans=self.search(n,m,ans,i,j 1,list_of_ans,vis)
vis[i][j 1]=0
if vis[i-1][j]==0 and i-1>-1 and m[i-1][j]==1:
vis[i-1][j]=1
ans ='U'
list_of_ans=self.search(n,m,ans,i-1,j,list_of_ans,vis)
vis[i-1][j]=0
if vis[i][j-1]==0 and j-1>-1 and m[i][j-1]==1:
vis[i][j-1]=1
ans ='L'
list_of_ans=self.search(n,m,ans,i,j-1,list_of_ans,vis)
vis[i][j-1]=0
if vis[i 1][j]==0 and i 1<n and m[i 1][j]==1:
vis[i 1][j]=1
ans ='D'
list_of_ans=self.search(n,m,ans,i 1,j,list_of_ans,vis)
vis[i 1][j]=0
return list_of_ans
輸入:
N = 4
m[][] = {{1, 0, 0, 0},
{1, 1, 0, 1},
{1, 1, 0, 0},
{0, 1, 1, 1}}
錯誤:
Traceback (most recent call last):
File "/home/e06cd8a4132efe0b88133e02abde22fd.py", line 70, in <module>
result = ob.findPath(matrix, n[0])
File "/home/e06cd8a4132efe0b88133e02abde22fd.py", line 12, in findPath
list_of_ans=self.search(n,m,ans,0,0,list_of_ans,vis)
File "/home/e06cd8a4132efe0b88133e02abde22fd.py", line 47, in search
list_of_ans=self.search(n,m,ans,i 1,j,list_of_ans,vis)
File "/home/e06cd8a4132efe0b88133e02abde22fd.py", line 26, in search
list_of_ans=self.s.................
uj5u.com熱心網友回復:
if vis[i][j 1]==0 and j 1<n and m[i][j 1]==1:
這可能會導致錯誤,因為它會vis[i][j 1]==0在檢查之前進行評估j 1<n。所以 if jever equals ,第一次檢查會在檢查是否有效n之前導致錯誤。j 1
要解決此問題,只需更改條件的順序即可。您需要對所有if陳述句進行類似的更改。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/464740.html
