[英]why am I getting segmentation fault? I am trying to solve the rat in a maze problem
[英]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) {
在檢查nx
和ny
是否在界限內之后,您應該只檢查visited
和m
。 and
表達式兩側的順序很重要。
visited[nx][ny] == 0
越界。 m[nx][ny] == 1
也是越界。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.