【问题标题】:How do we flag obstacles on an n*n chess board [closed]我们如何在 n * n 棋盘上标记障碍[关闭]
【发布时间】:2021-02-14 06:05:57
【问题描述】:

我有一个二维数组棋盘。我还有另一个用于 2d 棋盘上障碍物的 2d 数组。

`int[][] obstacles=({1,2}, {2,3}, {3,4});

我不明白如何使用这些障碍物阵列,并在棋盘上标记位置,以使棋子(国王、王后等)无法进入该位置。

【问题讨论】:

  • 您比我们更了解这个obstacles 数组的含义。似乎没有某种众所周知的“在棋盘上标记障碍”的实现。但鉴于它是一个由两个数字组成的数组,我们很有可能在这里查看坐标:{1,2} 可能意味着文件 1 中的障碍物,等级 2(正方形 a1,如果您熟悉国际象棋符号),等等。没有更多信息,我们只能进一步推测。
  • 你说的障碍是指同色的棋子吗?
  • 是的,这是正确的(a1-{1,2}、b3-{2,3} 等)。
  • 不管是什么颜色。
  • 在这些问题中,我必须计算女王在 n*n 网格上可以访问多少个方格,如果有障碍物/棋子,那么女王不能从障碍。

标签: java arrays 2d


【解决方案1】:

为什么要使用 int 数组而不是 boolean 数组?只需创建一个 8x8 布尔数组,然后使用带有 if/else 语句的嵌套 for 循环将第 2、3、4 和 5 行初始化为 false,并将第 0、1、6 和 7 行初始化为 true,以在 true 和 false 之间切换行。之后,当一个棋子试图移动到一个格子时,你首先检查目标格子的值,如果它是真的,那么这意味着这个格子已经被占据并选择不同的移动。如果棋子要移动的方格是开放的,则新方格和前一个方格的布尔数组元素分别更改为真和假。

【讨论】:

    猜你喜欢
    • 2016-03-11
    • 2021-12-15
    • 2015-07-02
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 2017-05-27
    • 2015-08-24
    • 1970-01-01
    相关资源
    最近更新 更多