理解这个编程挑战逻辑
Understanding this programming challenge logic
我正在研究这个 programming challenge,但我在理解棋盘的组成方面遇到了一些困难。从我设法理解的是:
- 我们收到一个大小为 4*4 的棋盘,结果是 16。
- 我们收到了针对攻击者的输入测试,我们需要使用公式 abs(x-xi) + abs(y-yi) <= ri 进行检查。运算结果需要小于或等于ri,如果这个条件成立则棋盘的方格可以被攻击者攻击。
我打算做的是开始一个棋盘,第一个方格是 (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 个正方形被攻击。
下一个案例指定了一个 1 x 10 的新棋盘,其中有 1 个攻击者。该攻击者坐在 (1,1) 上并攻击 (1,1) 和 (1,2) 所以 2 个方格。那么你的算法应该可以工作(按照你描述的方式,你需要在攻击者身上嵌套第二个迭代循环,但我宁愿在一个循环中一次读取一个攻击者,然后在方块上迭代)。
我正在研究这个 programming challenge,但我在理解棋盘的组成方面遇到了一些困难。从我设法理解的是:
- 我们收到一个大小为 4*4 的棋盘,结果是 16。
- 我们收到了针对攻击者的输入测试,我们需要使用公式 abs(x-xi) + abs(y-yi) <= ri 进行检查。运算结果需要小于或等于ri,如果这个条件成立则棋盘的方格可以被攻击者攻击。
我打算做的是开始一个棋盘,第一个方格是 (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 个正方形被攻击。 下一个案例指定了一个 1 x 10 的新棋盘,其中有 1 个攻击者。该攻击者坐在 (1,1) 上并攻击 (1,1) 和 (1,2) 所以 2 个方格。那么你的算法应该可以工作(按照你描述的方式,你需要在攻击者身上嵌套第二个迭代循环,但我宁愿在一个循环中一次读取一个攻击者,然后在方块上迭代)。