問題鏈接: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;
}
};
uj5u.com熱心網友回復:
我已經為您的代碼撰寫了測驗:https ://godbolt.org/z/TazozK8xe并啟用了地址清理程式。
無需閱讀您的代碼,只需閱讀 sanitizer 日志,您就可以看到您有不定式遞回(注意堆疊幀數超過 178,當問題很簡單時,最多 4 個步驟即可完成)。基本上你停止遞回的條件是錯誤的或不完整的。
我建議您學習如何使用除錯器,以便您更容易理解這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/478709.html
下一篇:C 遞回迷宮求解器無限回圈
