【发布时间】:2016-10-09 16:30:58
【问题描述】:
我正在处理这个programming challenge,但我在理解棋盘的组成时遇到了一些困难。据我了解是:
- 我们收到一副 4*4 的棋盘棋,有 16 个。
- 我们收到了针对攻击者的输入测试,我们需要使用公式 abs(x-xi) + abs(y-yi)
我计划做的是开始一个棋盘,其中第一个方格是 (0,0),最后一个方格是 (3,3)。我需要从第一个位置进行迭代,然后执行操作以查找该正方形是否小于 Ri,如果小于,则用计数器标记该入口并继续。
我手动检查第一种情况的输出是否正确,我得到了 5 个可到达的方格,但输出得到了 10。我从 (1,1) 到 (4,4) 重新绘制了我的棋盘) 手工算了算,也得了 5。第一个测试是 (1,1,1),攻击者在位置 (1,1),范围为 1。
如果我使用从 (0,0) 开始的棋盘,可以攻击的方格是:2,5,6,7 和 10。如果我使用从 (1,1) 开始的棋盘,那么可以攻击的方格是:1 ,2,5,9 和 10。
【问题讨论】:
-
首先,我会坚持他们的符号并从 1 开始。其次,人们确实会攻击他们所在的广场。所以在第一种情况下,(1,1)攻击者攻击(1,1),(1,2)和(2,1),(3,1)攻击(3,1),(3,2) ) 和 (4,1) [也是 (2,1),但我们已经计算过了] 和 (3,3) 攻击自身,(2,3)、(3,4) 和 (4,3)。 [还有 (3,2),我们已经计算过了] 那就是声称的被攻击的 10 个方格。
-
另外,我认为您将更容易将每个方格设置为未受到攻击,然后迭代攻击者并标记他们攻击的方格(至少在手算中这对我来说更容易)。
-
让我知道您是否认为以上内容构成了您问题的答案,在这种情况下,我将照此发布。由于过去的一些 cmets 和 downvotes,我在这方面有点害羞。
-
我更了解问题是如何编写的,但我也从你的解释中发现了另一个逻辑错误。第一种情况发送结果 10,但我们采用前三个输入 (1,1)、(3,1) 和 (3,3)。下一个案例是 (1,10),我相信它会是 0,因为 10 在我们的棋盘之外,但是我们收到另一个 (1,1),它将得到 3 [根据您的解释],但第二种情况的结果是2. 英语不是我的母语抱歉给你添麻烦了。 @JeremyKahan
-
下一个案例指定了一个 1 x 10 的新棋盘,有 1 个攻击者。该攻击者坐在 (1,1) 上并攻击 (1,1) 和 (1,2) 两个方格。
标签: math language-agnostic logic