将谜题放入螺旋的算法
本文关键字:螺旋 算法 | 更新日期: 2023-09-27 18:11:36
我在写解谜游戏的算法。我用这种方式把谜题排成螺旋形:
[07][08][09][10]
[06][01][02][11]
[05][04][03][12]
[16][15][14][13]
例子- 拼图的位置[02]必须符合拼图的西部边缘[01]东部优势;
- 拼图的位置[06]必须适合其东边缘拼图[01]西边缘;它的南缘必须与拼图的北缘相吻合[05]。
我将有不可预测的谜题数量,我总是试图从中形成最大的正方形。
我创建了以下类和函数
class Tile
{
private int north;
private int east;
private int south;
private int west;
}
bool checkFit(Tile t, Tile[] R, int pos)
{
if (pos == 0)
return true;
return false;
}
}
在checkfit中,我将检查是否可以将puzzle作为数组的下一个元素。它得到我试图放置的瓷砖,数组填充到我想要填充的当前位置,以及第一个空位置(最后一个不需要,因为我将检查数组R中的第一个空元素,它现在只是函数的骨架)。
问题是我不能找出算法来检查n个瓷砖是否适合(n-1)条瓷砖边(哪一条?),如果有另一个瓷砖检查
问题是我不能找出算法来检查n块是否合适(n-1)条瓷砖边(哪条?)以及是否有另一个瓷砖要检查.
你在解决方案上遇到问题的原因是你的原型不能解决问题。
您需要跟踪tile的行和列,这就是全部。我假设变量是相邻的瓷砖,对吗?
所以贴图07应该与06、16、08和10相邻,对吗?
如果是这种情况,那么算法非常简单。