Это моя мысль о том, как мне решить эту проблему:
Кажется, что для каждой фигуры существует 4 возможных типа (включая оригинал):
1 1 1 1 1 1 1 1
1 -> 1 1 1
1 1 1 1, 1, 1 1 1
Теперь давайтескажем, есть s
количество фигур, тогда есть 4s
всего фигур.
Возьмите комбинацию из 4s
фигур и сформируйте фигуру, такую как:
2
1 2 2
1 2 3 3
1 1 1
или
1 1 1
1 2 3 3
1 2 2
2
или
1 1 1 3 3
1 2 2 2
1 2
или
любая такая цифра из (4s)^2 = 16s^2
возможностей.
На самом деле это больше, чем 16s^2
потому что это не просто объединение форм, вам нужно жадно искать свободные места и пытаться вписаться в них.: (
Теперь у вас есть фигура в вашей руке, ищите ту же форму в вашей сетке.
Так, например, для поиска
1 1 1
1 2 3 3
1 2 2
2
Я бы посмотрелдля
0 0 0
0 0 0 0
0 0 0
0
в исходной сетке.
Тогда возникает проблема с нахождением этой цифры в исходной матрице.
Также см. this , который похож на вопрос, но не совсем тот же, о поиске фигур.