如何解决Segmentation Fault C++ 岛数
问题是找到基本上是 dfs 的岛数,它对于短测试用例来说很酷,但对于大用例它有分段错误。
int isSafe(
vector<vector<char>> &grid,int row,int col,vector<vector<bool>> &visited)
{
return ((row >= 0) &&
(row < grid.size()) &&
(col >= 0) &&
(col < grid[0].size()) &&
(grid[row][col] == '1') &&
!visited[row][col]);
}
void DFS(
vector<vector<char>> &grid,vector<vector<bool>> &visited)
{
int rowNbr[8] = {-1,-1,1,1};
int colNbr[8] = {-1,1};
visited[row][col] = true;
for (int k = 0; k < 8; ++k)
if (isSafe(grid,row + rowNbr[k],col + colNbr[k],visited))
DFS(grid,visited);
}
int numIslands(vector<vector<char>> &grid)
{
// Code here
if (grid.empty())
return 0;
int Row = grid.size();
int Col = grid[0].size();
vector<vector<bool>> visited(Row,vector<bool>(Col,false));
int count = 0;
for (int i = 0; i < Row; ++i)
for (int j = 0; j < Col; ++j)
{
if ((grid[i][j] == '1') && !visited[i][j])
{
DFS(grid,i,j,visited);
++count;
}
}
return count;
}
为什么此代码在 Row=500 和 Col=500 的大型测试用例中存在分段错误。它适用于简短的测试用例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。