c ++控制台检查相邻元素是否重复
c++ console Check adjacent elements for duplicates
我有一个随机生成的数字网格,大小为 gameSize
(用户输入),包含在一个向量向量中。用户可以输入两个坐标 (x, y),以便将网格内的数字更改为预定义值,即“0”。
因此,例如用户输入 X:0 Y:0 和:
{9, 7, 9}
{9, 6, 8}
{5, 1, 4}
变为:
{0, 7, 9} <-- Changes position 0,0 to 0 (the predefined value)
{9, 6, 8}
{5, 1, 4}
例如,由于三个 0 冲突,因此不允许以下内容。
{0, 0, 9}
{0, 6, 8}
{5, 1, 4}
但以下内容有效:
{0, 7, 0}
{9, 0, 8}
{5, 1, 4}
试试这个:
if (
(row == 0 || myGame[row-1][col] != 0) // element above (if applicable)
&& (row == gameSize-1 || myGame[row+1][col] != 0) // element below
&& (col == 0 || myGame[row][col-1] != 0) // element to the left
&& (col == gameSize-1 || myGame[row][col+1] != 0) // element to the right
)
myGame[row][col] = 0;
else
...
每个条件仅检查是否存在相邻元素(利用 短路评估,请参阅逻辑运算符下的 here。换句话说,例如,仅当 row == 0
为 false 时才会检查 myGame[row-1][col]
,从而防止由于未经授权的内存访问而导致的崩溃。
我有一个随机生成的数字网格,大小为 gameSize
(用户输入),包含在一个向量向量中。用户可以输入两个坐标 (x, y),以便将网格内的数字更改为预定义值,即“0”。
因此,例如用户输入 X:0 Y:0 和:
{9, 7, 9}
{9, 6, 8}
{5, 1, 4}
变为:
{0, 7, 9} <-- Changes position 0,0 to 0 (the predefined value)
{9, 6, 8}
{5, 1, 4}
例如,由于三个 0 冲突,因此不允许以下内容。
{0, 0, 9}
{0, 6, 8}
{5, 1, 4}
但以下内容有效:
{0, 7, 0}
{9, 0, 8}
{5, 1, 4}
试试这个:
if (
(row == 0 || myGame[row-1][col] != 0) // element above (if applicable)
&& (row == gameSize-1 || myGame[row+1][col] != 0) // element below
&& (col == 0 || myGame[row][col-1] != 0) // element to the left
&& (col == gameSize-1 || myGame[row][col+1] != 0) // element to the right
)
myGame[row][col] = 0;
else
...
每个条件仅检查是否存在相邻元素(利用 短路评估,请参阅逻辑运算符下的 here。换句话说,例如,仅当 row == 0
为 false 时才会检查 myGame[row-1][col]
,从而防止由于未经授权的内存访问而导致的崩溃。