В гостинице для жирафов администрация хочет запастись подушками так, чтобы удовлетворить потребности любого своего возможного постояльца. Известно, что жирафам в зависимости от длины их шеи нужно сложить стопку подушек (в стопке одна или несколько подушек) толщиной от 1
до n сантиметров. При этом администрация хочет обойтись как можно меньшим числом подушек, а среди наборов подушек, удовлетворяющих этим требованиям, администрация выберет набор минимальной суммарной толщины, чтобы он занимал минимальный объём в шкафу.
Помогите администрации составить нужный набор подушек, позволяющий получить стопку любой высоты от 1
до n сантиметров включительно. НА ЯЗЫКЕ PASCAL!!!!
pascal
program GiraffePillows;
const
INF = 1000000000;
var
n, i, j: integer;
dp: array [0..10000] of integer;
begin
// Вводим максимальную высоту стопки подушек
readln(n);
// Инициализируем массив dp
for i := 1 to n do
dp[i] := INF;
dp[0] := 0;
// Вычисляем количество подушек для каждого значения от 1 до n
for i := 1 to n do
begin
for j := 1 to i do
begin
dp[i] := min(dp[i], dp[i-j] + 1);
end;
end;
// Выводим результат
writeln(dp[n]);
end.
Эта программа считывает максимальную высоту стопки подушек, вычисляет минимальное количество подушек и выводит результат. Решение использует два вложенных цикла, что дает сложность O(n^2).
Например, если вводим n = 5, программа выведет 3, так как для создания стопки высотой 5 нам понадобится 3 подушки толщиной 1, 2 и 2 сантиметра соответственно.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет