匹配对搜索算法?

时间:2010-01-20 14:33:57

标签: c# algorithm matching

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

alt text http://img14.imageshack.us/img14/382/16170399.png

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

2 个答案:

答案 0 :(得分:2)

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

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


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

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

答案 1 :(得分:0)

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