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 (将#修改为@)