簡體   English   中英

嘿,我在下面的代碼中遇到了迷宮問題中老鼠的分段錯誤

[英]hey im getting segmentation fault in below code for rat in a maze problem

如果 grid[i][j]==0 路徑被阻塞的老鼠在 0,0 中,則給迷宮問題中的標准老鼠一個二元網格,找到到達 n-1,n-1 單元格的所有方法。 我已經設置了我猜想的所有限制條件。

 class Solution{ public: // vector<string>ans; // vector<pair<int,int>>dir={{0,1},{0,-1},{-1,0},{1,0}}; // vector<string>move={"R","L","U","D"}; void dfs(int i,int j,vector<vector<int>>&m,string curr,vector<vector<int>>&visited,vector<pair<int,int>>dir,vector<string>move,vector<string>&ans){ if(i==m.size()-1 and j==m.size()-1){ ans.push_back(curr); return; } for(int z=0;z<dir.size();z++ ){ int nx=i+dir[z].first; int ny=j+dir[z].second; if(visited[nx][ny]==0 and m[nx][ny]==1 and nx>=0 and nx<m.size() and ny>=0 and ny<m.size() ){ visited[nx][ny]=1; dfs(nx,ny,m,curr+move[z],visited,dir,move,ans); visited[nx][ny]=0; } } } vector<string> findPath(vector<vector<int>> &m, int n) { vector<vector<int>>visited(m.size(),vector<int>(n,0)); string curr=""; vector<string>ans; vector<pair<int,int>>dir={{0,1},{0,-1},{-1,0},{1,0}}; vector<string>move={"R","L","U","D"}; dfs(0,0,m,curr,visited,dir,move,ans); return ans; }

};

改變

if (visited[nx][ny]==0 and m[nx][ny]==1 and nx>=0 and nx<m.size() and ny>=0 and ny<m.size()) {

if (nx>=0 and nx<m.size() and ny>=0 and ny<m.size() and visited[nx][ny]==0 and m[nx][ny]==1) {

在檢查nxny是否在界限內之后,您應該只檢查visitedm and表達式兩側的順序很重要。

visited[nx][ny] == 0越界。 m[nx][ny] == 1也是越界。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM