我正在为拼图游戏编写算法。我正以这种方式拼插螺旋:
[07][08][09][10]
[06][01][02][11]
[05][04][03][12]
[16][15][14][13]
实施例
我将会有一些不可预测的谜题,我总是试图形成最大的方块 我创建了以下类和函数
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中,我将检查是否可以将拼图作为我阵列的下一个元素。它得到我尝试放置的图块,填充了我要填充的当前位置的图块,以及第一个空位置(最后一个不需要,因为我将检查数组R中的第一个null元素,它是现在只有功能的骨架)。
问题是如果它适合(n-1)瓦片边缘(以及哪一个?)并且是否有另一个要检查的瓦片,我无法找出检查n瓦片的算法。
答案 0 :(得分:0)
问题是如果它适合,我无法找出检查n个tile的算法 (n-1)瓦片边缘(以及哪一个?)以及是否有另一个瓦片要检查
您在解决问题时遇到问题的原因是您的原型无法解决问题。
您需要跟踪所有瓷砖的行和列。我假设变量是相邻的瓷砖正确吗?
因此,牌区07将与06 16 08和10正确相对应?
如果是这种情况,则算法非常简单。 你需要一个锯齿状的数组。