检查矩阵中单元格值的邻居
Checking the neighbours of a cell value from a matrix
我有一个充满 * and -
的矩阵,其中 *
代表一个病毒,-
一个病毒的空闲点,我必须在我的矩阵中检查每个病毒的邻居病毒,一个有效的邻居是另一个病毒而不是一个自由点,以便建立它们的数量。我要检查的邻居是 [row + 1][col]
、[row - 1][col]
、[row][col + 1]
和 [row][col - 1]
,总共四个邻居。我创建了一个函数来检查并涵盖所有情况,例如,如果我正在检查的元素是矩阵的一个角。我想出了一个非常长的 80 行函数,其中有很多 if
语句。
除了必须编写 20 if
语句之外,是否有一种有效的方法(意味着行数)来检查所有这些?
https://pastebin.com/2f7YpreZ 这是我写的代码
您可以做的是合并导致相同结果的 if 语句。这将导致更短(且更易读)的代码,并且在某些情况下可以提高性能。
例如,如果您有:
if([row - 1][col])
// do A
else if([row][col + 1])
// do B
else if([row + 1][col])
// do A
那你可以这样写:
if([row - 1][col] || [row + 1][col])
// do A
else if([row][col + 1])
// do B
这样做,如果您觉得您的代码需要进一步改进,请 post 在 Code Review。
我有一个充满 * and -
的矩阵,其中 *
代表一个病毒,-
一个病毒的空闲点,我必须在我的矩阵中检查每个病毒的邻居病毒,一个有效的邻居是另一个病毒而不是一个自由点,以便建立它们的数量。我要检查的邻居是 [row + 1][col]
、[row - 1][col]
、[row][col + 1]
和 [row][col - 1]
,总共四个邻居。我创建了一个函数来检查并涵盖所有情况,例如,如果我正在检查的元素是矩阵的一个角。我想出了一个非常长的 80 行函数,其中有很多 if
语句。
除了必须编写 20 if
语句之外,是否有一种有效的方法(意味着行数)来检查所有这些?
https://pastebin.com/2f7YpreZ 这是我写的代码
您可以做的是合并导致相同结果的 if 语句。这将导致更短(且更易读)的代码,并且在某些情况下可以提高性能。
例如,如果您有:
if([row - 1][col])
// do A
else if([row][col + 1])
// do B
else if([row + 1][col])
// do A
那你可以这样写:
if([row - 1][col] || [row + 1][col])
// do A
else if([row][col + 1])
// do B
这样做,如果您觉得您的代码需要进一步改进,请 post 在 Code Review。