#алгоритм
Как найти это минимальное число на интуитивном уровне - понятно (см. рисунок) Пусть задана сторона квадрата n, тогда это число равняется: min = 4 + (n^2 - (3*floor(n/2)^2 + ceil(n/2)^2) (1) то есть для четных n, min = 4, а для нечётных min = 4 + кол-во единичных квадратов Но непонятно, как формально доказать формулу (1)? То есть что вот это (n^2 - (3*floor(n/2)^2 + ceil(n/2)^2) есть ни что иное, как минимально необходимое количество единичных квадратов. update как оказалось, формула 1 не оптимальна в общем случае (см пример @Harry) Тогда вопрос: Как найти минимальное число квадратов кроме самого себя, которыми можно покрыть этот квадрат ?
Ответы
Ответ 1
В общем случае ваше решение не оптимально. Для доказательства, к счастью, достаточно контрпримера - вот он: Слева - ваше решение, справа - немного получше (не буду утверждать, что оптимальное). Тьфу, ну я даю... Тут же вообще можно было поделить квадрат 9x9 на 9 квадратов 3x3! Ладно, оставлю уж свой позорняк... :)
Комментариев нет:
Отправить комментарий