Подорожньому потрібно зупинитися на п’ять днів у готелі за містом. У нього немає готівки, а термін його дії закінчується. Але він має золотий ланцюжок з російськими ланками.
Правило в цьому готелі полягає в тому, що мешканці повинні платити оренду кожного ранку. Мандрівник домовляється з менеджером про сплату однієї ланки золотого ланцюжка за кожен день. Але менеджер також вимагає, щоб подорожуючий щонайменше завдав шкоди ланцюжку, платячи щодня. Іншими словами, він повинен придумати рішення, щоб перерізати якомога менше посилань.
Вирізання посилання створює три підрозділи: одна, що містить лише зрізане посилання, і одна з кожної сторони. Наприклад, розрізання третьої ланки ланцюга довжиною 8 створює підсхеми довжиною [2, 1, 5]. Керівник із задоволенням вносить зміни, тому мандрівник може оплатити перший день ланцюжком довжиною 1, потім другий день ланцюжком довжиною 2, повернувши перший ланцюг назад.
Ваш код повинен вводити довжину n та виводити список посилань на скорочення мінімальної довжини.
Правила :
- n - ціле число> 0.
- Для посилань можна використовувати індексацію на основі 0 або 1.
- Для деяких чисел рішення не є унікальним. Наприклад, якщо
n = 15
обидва[3, 8]
і[4, 8]
є дійсними результатами. - Ви можете повернути список або надрукувати його будь-яким розумним роздільником.
- Це код-гольф , тому виграє найкоротший код у байтах.
Тестові приклади :
Input Output (1-indexed)
1 []
3 [1]
7 [3]
15 [3, 8]
149 [6, 17, 38, 79]
Детальний приклад
При n = 15 розрізання ланок 3 і 8 призводить до підрядів довжини [2, 1, 4, 1, 7]
. Це правильне рішення, оскільки:
1 = 1
2 = 2
3 = 1+2
4 = 4
5 = 1+4
6 = 2+4
7 = 7
8 = 1+7
9 = 2+7
10 = 1+2+7
11 = 4+7
12 = 1+4+7
13 = 2+4+7
14 = 1+2+4+7
15 = 1+1+2+4+7
Не існує рішення лише з одним розрізом, тому це оптимальне рішення.
Додаток
Зауважте, що ця проблема пов'язана з цілим розділенням. Ми шукаємо розбиття P з п , що всі цілі числа від 1 до п , по крайней мере , один patition , який є підмножиною P .
Ось відео YouTube про один можливий алгоритм цієї проблеми.
1+2
. Звідки взявся другий ланцюг 2-ланки?