Алгоритм размещения головоломок по спирали

Я пишу алгоритм для головоломки. Я ставлю головоломки по спирали следующим образом:

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

пример

  1. загадка на месте [02] должна соответствовать ее западному краю, чтобы загадать [01] восточный край;
  2. загадка на месте [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;
            }
    }

В проверке я буду проверять, могу ли я поставить головоломку как следующий элемент моего массива. Он получает плитку, которую я пытаюсь поместить, массив, заполненный плитками до текущей позиции, которую я хочу заполнить, и первую пустую позицию (последняя не понадобится, так как я проверю первый нулевой элемент в массиве R, это только скелет функции сейчас).

Проблема в том, что я не могу понять алгоритм проверки для n плитки, если она соответствует (n-1) краю плитки (и какой?) И есть ли другая плитка для проверки.

1 ответ

Решение

Проблема в том, что я не могу понять алгоритм проверки для n плитки, если она соответствует (n-1) краю плитки (и какой?) И есть ли другая плитка для проверки.

Причина, по которой у вас возникают проблемы, связанные с вашим решением, заключается в том, что ваш прототип не решит проблему.

Вы должны следить за строкой и столбцом плитки, которая все. Я предполагаю, что переменные являются правильными?

Таким образом, плитка 07 будет смежной с 06 16 08 и 10 правильной?

Если это так, то алгоритм чрезвычайно прост. Вам нужен зазубренный массив для одной вещи.

Другие вопросы по тегам