任何人都可以告诉我为什么会出现运行时错误
Anyone can tell me why it is giving runtime error
问题 Link: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;
}
};
我已经为您的代码编写了测试:https://godbolt.org/z/TazozK8xe 并启用了地址清理程序。
无需阅读您的代码,只需阅读消毒剂日志,您就可以看到您有不定式递归(注意堆栈帧的数量超过 178,而问题很简单,最多 4 步即可完成)。基本上你停止递归的条件是错误的或不完整的。
我建议您学习如何使用调试器,以便您更容易理解这个问题。
问题 Link: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;
}
};
我已经为您的代码编写了测试:https://godbolt.org/z/TazozK8xe 并启用了地址清理程序。
无需阅读您的代码,只需阅读消毒剂日志,您就可以看到您有不定式递归(注意堆栈帧的数量超过 178,而问题很简单,最多 4 步即可完成)。基本上你停止递归的条件是错误的或不完整的。
我建议您学习如何使用调试器,以便您更容易理解这个问题。