Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.08.2020, 18:12
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

Помогите разобрать задание
Есть набор чисел в массиве, который представляет количество
последовательных дней возможного бронирования квартиры, Вы в качестве
арендодателя хотите выбрать последовательность, которая максимизирует
количество дней пребывания, однако Вам нужно как минимум 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
Ответить с цитированием
  #2 (permalink)  
Старый 11.08.2020, 18:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Marson
какой алгоритм должен быть, чтобы вывести 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!

Последний раз редактировалось рони, 11.08.2020 в 19:10.
Ответить с цитированием
  #3 (permalink)  
Старый 11.08.2020, 19:00
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

задача сводится к нахождению самых профитных цепочек по кол-ву дней, на вход программы подается массив из чисел - кол-ва дней возможного бронирования, а Вам необходимо составить алгоритм для нахождения профитных цепочек, к примеру


мне кажется не так вы пишете должно быть. Как объяснить этот пример [4,6,3]=>7?
Ответить с цитированием
  #4 (permalink)  
Старый 11.08.2020, 19:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Marson
Как объяснить этот пример [4,6,3]=>7?
смотрите пост #2 добавлено
Ответить с цитированием
  #5 (permalink)  
Старый 11.08.2020, 19:44
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

а этот [2, 4, 4, 3, 3] => получаем 9, вот так [2, 0, 4, 0, 3] => 9?
Ответить с цитированием
  #6 (permalink)  
Старый 11.08.2020, 19:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Marson
вот так [2, 0, 4, 0, 3] => 9?
да
Ответить с цитированием
  #7 (permalink)  
Старый 11.08.2020, 19:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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]))

Последний раз редактировалось рони, 11.08.2020 в 23:08.
Ответить с цитированием
  #8 (permalink)  
Старый 11.08.2020, 22:11
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

Я просто не понимаю смысл задания. Нужно найти последовательность, которая максимизирует
количество дней пребывания?
Ответить с цитированием
  #9 (permalink)  
Старый 11.08.2020, 22:15
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

Спасибо за код конечно же, но мне нужно свой написать, это с конторы тз прислали, а копипастить это не то)
Ответить с цитированием
  #10 (permalink)  
Старый 12.08.2020, 02:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Marson
Я просто не понимаю смысл задания.
Я тоже, почему:

[7, 1, 2, 5] => 12
7 => Авг 1 - Авг 7
1 => Авг 7 - Авг 8
2 => Авг 8 - Авг 10
5 => Авг 10 - Авг 15

И если бы мне был такой заказ от гостиничного бизнеса я бы выяснил у них, что это и как, а не тут задавал вопрос.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задание на тему инкапсуляции splean101 Элементы интерфейса 0 14.10.2018 07:47
Интересное задание "Поединок" помогите решить Anton27 Общие вопросы Javascript 1 23.05.2017 22:24
Помогите сделать задание malin Общие вопросы Javascript 4 16.08.2016 11:00
Помогите сделать тестовое задание начального уровня по js makregistr Работа 1 16.12.2010 14:26
Прелоэдер. Помогите разобрать код. bayah Общие вопросы Javascript 1 05.05.2010 20:32