Помогите разобрать задание
Есть набор чисел в массиве, который представляет количество
последовательных дней возможного бронирования квартиры, Вы в качестве арендодателя хотите выбрать последовательность, которая максимизирует количество дней пребывания, однако Вам нужно как минимум 1-дневный перерыв между бронированиями для уборки. Написать ф-цию нахождения. Пример: [7, 1, 2, 5] => 12 7 => Авг 1 - Авг 7 1 => Авг 7 - Авг 8 2 => Авг 8 - Авг 10 5 => Авг 10 - Авг 15 [3, 6, 4] => 7 [4, 10, 3, 1, 5] => 15 подаем на вход [2, 4, 4, 3, 3] => получаем 9 Не могу понять какой алгоритм должен быть, чтобы вывести 12, 7, 15, 9 |
Цитата:
[7, 1, 2, 5] => 12 [0, 1, 0, 5] 1 + 5 = 6 [7, 0, 0, 5] 7 + 5 = 12! [7, 0, 2, 0] 7 + 2 = 9 [3, 6, 4] => 7 [3, 0, 4] 3 + 4 = 7! [0, 6, 0] 6 тоже самое [4,6,3] =>7 [0,6,0] = 6 [4,0,3] 4 + 3 =7! |
задача сводится к нахождению самых профитных цепочек по кол-ву дней, на вход программы подается массив из чисел - кол-ва дней возможного бронирования, а Вам необходимо составить алгоритм для нахождения профитных цепочек, к примеру
мне кажется не так вы пишете должно быть. Как объяснить этот пример [4,6,3]=>7? |
Цитата:
|
а этот [2, 4, 4, 3, 3] => получаем 9, вот так [2, 0, 4, 0, 3] => 9?
|
Цитата:
|
Marson,
не самый оптимальный вариант ... const maxSumm = arr => { if(arr.length < 2) return Math.max(...arr, 0); let temp = [[0, arr[1]], [arr[0], 0]], up = []; for (let i = 2; i < arr.length; i++) { up = []; temp = temp.map(ar => { let last = ar[ar.length - 1], prev = ar[ar.length - 2]; if (last) ar.push(0); else if (prev) { up.push([...ar, 0]); ar.push(arr[i]) } else ar.push(arr[i]) return ar }); temp = temp.concat(up) } temp = temp.map(a => a.reduce((a, b) => a + b)); return Math.max(...temp); } alert(maxSumm([4, 10, 3, 1, 5])) |
Я просто не понимаю смысл задания. Нужно найти последовательность, которая максимизирует
количество дней пребывания? |
Спасибо за код конечно же, но мне нужно свой написать, это с конторы тз прислали, а копипастить это не то)
|
Цитата:
[7, 1, 2, 5] => 12 7 => Авг 1 - Авг 7 1 => Авг 7 - Авг 8 2 => Авг 8 - Авг 10 5 => Авг 10 - Авг 15 И если бы мне был такой заказ от гостиничного бизнеса я бы выяснил у них, что это и как, а не тут задавал вопрос. |
Часовой пояс GMT +3, время: 19:40. |