【问题标题】:c++ console Check adjacent elements for duplicatesc ++控制台检查相邻元素是否重复
【发布时间】:2017-04-20 09:50:48
【问题描述】:

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

【问题讨论】:

    标签: c++ duplicates elements


    【解决方案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] 仅在 row == 0 为 false 时检查,从而防止由于未经授权的内存访问而导致崩溃。

    【讨论】:

      猜你喜欢
      • 2021-07-02
      • 2011-09-22
      • 2016-06-07
      • 2011-06-15
      • 2021-01-08
      • 2011-09-25
      • 2011-06-13
      • 1970-01-01
      相关资源
      最近更新 更多