c ++ console检查重复项的相邻元素

时间:2017-04-20 09:50:49

标签: c++ duplicates elements

我有一个随机生成的大小为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}

1 个答案:

答案 0 :(得分:1)

试试这个:

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)。换句话说,例如,仅当myGame[row-1][col]为false时才会检查row == 0,从而防止因未经授权的内存访问而导致崩溃。