Лучшие помощники
- Megamozg 2205 б
- Matalya1 1800 б
- DevAdmin 1720 б
- arkasha_bortnikov 900 б
- Dwayne_Johnson 870 б
20 октября 2023 10:23
384
скольким способами квадрат 17×17 можно разбить на прямоугольники, среди которых есть по два вертикальных и по два горизонтльных прямоугольника 1×16, 1×14, ... , 1×2 и один квадрат 1×1?
1
ответ
Для решения этой задачи можно использовать метод динамического программирования.
Пусть dp[i][j] - количество способов разбить квадрат i×j с учетом условий задачи.
Инициализируем dp[0][0] = 1, так как пустой квадрат можно разбить только одним способом - не разбивая его на прямоугольники.
Затем заполняем таблицу dp построчно, начиная с первой строки и до i = 17 и по столбцам, начиная с первого столбца и до j = 17.
Для каждой ячейки dp[i][j] есть несколько возможных способов разбить квадрат i×j:
1) Если i >= 2 и j >= 2, то можно разбить квадрат на две части: одну горизонтальную и одну вертикальную. Таким образом, к текущему значению dp[i][j] нужно добавить dp[i-1][j] * dp[i][j-1].
2) Если i >= 16 и j = 1, то можно разбить квадрат на одну горизонтальную часть размером 1×16 и одну вертикальную часть размером i×1. Таким образом, к текущему значению dp[i][j] нужно добавить dp[i-16][j].
3) Если i >= 14 и j = 1, то можно разбить квадрат на одну горизонтальную часть размером 1×14 и одну вертикальную часть размером i×1. Таким образом, к текущему значению dp[i][j] нужно добавить dp[i-14][j].
4) Продолжаем аналогично для других размеров прямоугольников 1×12, 1×10, 1×8, 1×6, 1×4 и 1×2.
5) Если i >= 1 и j = 1, то можно разбить квадрат на одну горизонтальную часть размером 1×1 и одну вертикальную часть размером i×1. Таким образом, к текущему значению dp[i][j] нужно добавить dp[i-1][j].
В результате, значение dp[17][17] будет содержать количество способов разбить квадрат 17×17 с заданными условиями.
Пусть dp[i][j] - количество способов разбить квадрат i×j с учетом условий задачи.
Инициализируем dp[0][0] = 1, так как пустой квадрат можно разбить только одним способом - не разбивая его на прямоугольники.
Затем заполняем таблицу dp построчно, начиная с первой строки и до i = 17 и по столбцам, начиная с первого столбца и до j = 17.
Для каждой ячейки dp[i][j] есть несколько возможных способов разбить квадрат i×j:
1) Если i >= 2 и j >= 2, то можно разбить квадрат на две части: одну горизонтальную и одну вертикальную. Таким образом, к текущему значению dp[i][j] нужно добавить dp[i-1][j] * dp[i][j-1].
2) Если i >= 16 и j = 1, то можно разбить квадрат на одну горизонтальную часть размером 1×16 и одну вертикальную часть размером i×1. Таким образом, к текущему значению dp[i][j] нужно добавить dp[i-16][j].
3) Если i >= 14 и j = 1, то можно разбить квадрат на одну горизонтальную часть размером 1×14 и одну вертикальную часть размером i×1. Таким образом, к текущему значению dp[i][j] нужно добавить dp[i-14][j].
4) Продолжаем аналогично для других размеров прямоугольников 1×12, 1×10, 1×8, 1×6, 1×4 и 1×2.
5) Если i >= 1 и j = 1, то можно разбить квадрат на одну горизонтальную часть размером 1×1 и одну вертикальную часть размером i×1. Таким образом, к текущему значению dp[i][j] нужно добавить dp[i-1][j].
В результате, значение dp[17][17] будет содержать количество способов разбить квадрат 17×17 с заданными условиями.
0
·
Хороший ответ
20 октября 2023 10:24
Остались вопросы?
Еще вопросы по категории Математика
Какое соотношение между сантиметрами и миллиметрами?...
Что такое '1 см в квадрате'?...
Помогите решить. Перечертите в тетрадь таблицу и заполните её. Таблица ниже, в фото....
опрос: Какие числа содержатся в последовательности "10x 5 6 8x 3 5x"?...
За 6 кг мармелада заплатили столько, сколько за 4,8 кг шоколадных конфет. Какова цена каждого вида сладостей, если 1 кг мармелада дешевле 1 кг шоколад...