我遇到了一个非常复杂的问题:
在包含鸡,鹰和院子的 MxN 字段中, 鸡试图逃离老鹰(进入院子里), 老鹰试图抓住鸡。鸡逃走了 当到达院子里面时,老鹰抓住了鸡 当它与鸡的位置相同时。只需一步, 老鹰可以移动一两个小方块,鸡可以 向任何方向移动一个方格。程序应该显示 一条消息说鸡是否能赢。它应该计算移动, 并且,在每一步,它应该在输出文件中写入当前 该字段的配置,它也应该在视觉上表示 它在屏幕上。田地的大小,鸡的位置 老鹰和院子里都有一个文件。
我已经通过创建字段(矩阵)解决了这个问题,但我无法弄清楚如何解决这个问题。也许回溯会是一个想法,但它非常复杂,我无法处理它。我想我应该找到一种方法来找出鸡和院子之间的距离,也可以找到老鹰和院子之间的距离,然后以某种方式工作。它必须在C。任何建议,想法欢迎! 提前谢谢!
答案 0 :(得分:0)
这是一个有趣的问题。我们再来看看规则吧。玩家
为了解决这个问题,我们必须假设它是轮流播放的:先是鸡,然后是老鹰等等。 游戏结束时:
这是距离的诀窍:
<强>更新强>
您想要的距离称为Chebyshev distance。您可以轻松计算出来:
distance = max of(difference of corresponding coordinates between the two points)
对于(1,1)和(2,3)距离= max(| 1-2 |,| 2-3 |)= 2
对于(2,3)和(4,7)距离= 4
对于(4,5,6)和(1,1,1)距离= 5
如果需要,您可以忽略旧答案。
<强>旧强>
distance = Manhattan distance - length of longest 45 deg diagonal
曼哈顿距离很容易理解。见其wiki。举一些例子:
---/F
--/-|
-/--|
C---X
manhattan distance = 7
length of max diagonal = 3
distance = 7-3 = 4
另一个
---/-F
--/--|
-/---|
C----X
distance = 8-3 = 5
警告:请记住,可能有许多最短路径。例如。
---F
--/F
-/-F
C--F
-\-F
--\F
---F
很多地方要进3步。使用距离计算器选择距离老鹰最远的一个。 此外,如果鹰和鸡之间的距离在任何时候都比鸡和田地小,那么老鹰就会赢得其他鸡肉。只需模拟动作,你就会知道。