匹配对搜索算法?

问题描述 投票:2回答:2

我在http://xepthu.uhm.vn找到了一对有趣的配对游戏。规则很简单,你必须找到并连接两个相同的口袋妖怪,但它们之间的路径没有被阻挡,方向不能改变3次。我们来看一个例子:

alt text

我认为很多算法检查任何2个选定的口袋妖怪之间的路径是否有效,但因为我是新手所以我找不到任何解决方案。你能用C#推荐一个吗?

c# algorithm matching
2个回答
2
投票

这基本上是来自graph theory的寻路问题。网格中的字段是节点,所有相邻字段通过边连接。

路径查找是一个众所周知的问题,有许多算法可以解决这个问题。由于你的图表非常小,这里最好的解决方案可能只是一个强力算法。一种流行的路径寻找算法是Dijkstra's algorithm


蛮力:从一些口袋妖怪开始,探索所有可能的方法,看看是否会导致一个相同的口袋妖怪。如果方式被阻挡或超过2回合,您可以停止探索。

你需要一些指针指向网格中的字段。指针可以向左,向右,向上或向下移动,前提是该方向上的字段未被阻挡。将指针移动到相邻的字段。记住你来自哪里以及你做了多少转弯。重复此操作直到您到达目的地。如果转数达到3,则回溯。确保不要以圆圈运行。


0
投票

看看平面图。您将不得不引入第二个条件:可以遍历不超过四个节点(起始节点 - 第一个方向更改 - 第二个方向更改 - 结束节点)。

© www.soinside.com 2019 - 2024. All rights reserved.