拼图在螺旋中的算法

时间:2011-10-19 11:13:52

标签: c# algorithm puzzle

我正在为拼图游戏编写算法。我正以这种方式拼插螺旋:

[07][08][09][10]      
[06][01][02][11]
[05][04][03][12]
[16][15][14][13]

实施例

  1. 拼图到位[02]必须适合其西边以拼图[01]向东 边缘;
  2. 拼图到位[06]必须适合其东边以拼图[01]西边;它的南边必须适合拼图[05]北边。
  3. 我将会有一些不可预测的谜题,我总是试图形成最大的方块 我创建了以下类和函数

     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瓦片的算法。

1 个答案:

答案 0 :(得分:0)

  

问题是如果它适合,我无法找出检查n个tile的算法   (n-1)瓦片边缘(以及哪一个?)以及是否有另一个瓦片要检查   

您在解决问题时遇到问题的原因是您的原型无法解决问题。

您需要跟踪所有瓷砖的行和列。我假设变量是相邻的瓷砖正确吗?

因此,牌区07将与06 16 08和10正确相对应?

如果是这种情况,则算法非常简单。 你需要一个锯齿状的数组。