[英]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.