【发布时间】:2022-12-20 04:20:21
【问题描述】:
问题链接:LeetCode,我收到运行时错误,但未找到问题所在。为什么它会给出运行时错误任何人都可以向我解释一下吗?
class Solution {
public:
bool dfs(vector<vector<int>>& grid, int row, int col, int color)
{
if(row<0 || col<0 || row>=grid.size() || col>=grid[0].size() || abs(grid[row][col])!=color)
return false;
grid[row][col]=-color;
bool first = dfs(grid, row-1, col, color);
bool second = dfs(grid, row, col+1, color);
bool third = dfs(grid, row+1, col, color);
bool fourth = dfs(grid, row, col-1, color);
if(first && second && third && fourth)
{
grid[row][col]=color;
}
return true;
}
vector<vector<int>> colorBorder(vector<vector<int>>& grid, int row, int col, int color) {
dfs(grid, row, col, grid[row][col]);
for(int i=0; i<grid.size(); i++)
{
for(int j=0; j<grid[0].size(); j++)
{
if(grid[i][j]<0)
grid[i][j]=color;
}
}
return grid;
}
};
【问题讨论】:
-
是时候学习一些此类网站不会教您的东西了:首先,如何debug您的程序,以及如何使用debugger。创建一个带有硬编码输入的minimal reproducible example,在本地构建和调试。
-
在
colorBorder中:j<grid[0].size()不应该是j<grid[i].size()吗? -
请在您的问题中也包括错误。
-
dfs(0, 0)将调用dfs(0, 1),后者将调用dfs(0, 0),dfs(0, 1)将调用dfs(0, 0),...它永远不会结束。 -
@molbdnilo 我明白你的意思了,谢谢你的解释
标签: c++ recursion graph depth-first-search