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],从而防止由于未经授权的内存访问而导致的崩溃。