繁体   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