на фиксированной карте размера целых чиселРасположить форму в 2D массив целых чисел
1,1,1,0,0,0,0,0,0,0,0,0,0
0,1,1,0,0,1,0,0,0,0,0,0,0
0,0,1,0,1,2,1,0,0,1,2,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0
найти, где находится произвольная форма повёрнутый:
0,0,0,1,0
1,0,1,1,1
Выход: [2,1] (Верхний левый угол формы)
Решение - это область, которая может предоставить необходимые значения для формы из их относительных положений на карте. Поиск слишком большого целочисленного значения не дисквалифицирует регион. Только один слишком маленький.
Подход к грубой силе состоит в том, чтобы перебирать все возможные смещения для формы, а затем зацикливать тестирование обеих матриц, если есть достаточные значения.
Другой подход состоит в том, чтобы суммировать строки и столбцы карты и формы, а затем находить возможные варианты решений, а затем проверять их, чтобы увидеть, работают ли они. Это поможет только тогда, когда карта будет малонаселенной.
Можете ли вы предложить лучший подход? Стремление уменьшить сложность Big O.
Ницца! Это позволит мне быстро игнорировать разреженные регионы и дополняет суммирование столбцов строк. Я дам вам кое-что, это часть попытки ответить на этот вопрос: http://stackoverflow.com/questions/12061439/algorithm-for-matching-cards-to-a-set-of-rules карта представляет собой карты в вашей руке (4 костюма 13 рангов), а форма представляет собой правила, которые вы должны соблюдать, чтобы заложить их. Перемещение формы вокруг означает возможность начать с любой карты. – CandiedOrange
Если вы хотите поговорить об этом, присоединитесь ко мне здесь: http://chat.stackoverflow.com/rooms/69012/cards-and-rules – CandiedOrange