【发布时间】:2021-04-05 08:16:59
【问题描述】:
我目前正在编写一个代码来检查给出的索引邻居(北、西、东、南),如果邻居的值为 0 或 11,它应该返回 false。起点是 0,0,其值为 4。 这是我的测试功能。
bool testG(int grid[ROW][COL], int row, int col) {
if (row < 0 || col < 0 || row >= ROW || col >= COL)
return false;
return grid[row][col] == 0 || grid[row][col] == 11;
}
这是我的查询:
if(testG(grid,-1,0) && testG(grid,0,-1) && testG(grid,1,0) && testG(grid,0,1))
{
return false;
}
这是我的二维数组,如果调用该函数,它应该返回 false。
int grid[ROW][COL] {{ 4, 11, 1, 1 },
{ 0, 0, 1, 0 },
{ 0, 1, 5, 0},
{ 0, 5, 0,0 } };
如果数组看起来像这样,它应该返回 true。
int grid[ROW][COL] {{ 4, 11, 1, 1 },
{ 1, 1, 1, 0 },
{ 0, 1, 5, 0},
{ 0, 5, 0,0 } };
我的问题是 if queryif(testG(grid,-1,0) && testG(grid,0,-1) 的前两部分对于上面的二维数组不会返回 true,因为数字 4 的西部和北部超出了界限。
如何优化我的代码,以便如果索引的一部分超出范围但如果其他查询正确则应返回 false?
提前致谢。
【问题讨论】:
-
让
testG返回true进行越界查询怎么样? -
@MikeCAT 非常感谢!!