Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.05.2021, 17:52
Интересующийся
Отправить личное сообщение для vurdalak21 Посмотреть профиль Найти все сообщения от vurdalak21
 
Регистрация: 22.05.2021
Сообщений: 10

Помогите решить задачку
Помогите решить задачку через циклы(for) и условия(if)
Изображения:
Тип файла: jpg Снимок экрана 2021-05-22 в 17.35.28.jpg (20.8 Кб, 9 просмотров)
Вложения:
Тип файла: zip Снимок экрана 2021-05-22 в 17.35.28.zip (260.4 Кб, 1 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 22.05.2021, 17:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 22.05.2021, 20:06
Интересующийся
Отправить личное сообщение для vurdalak21 Посмотреть профиль Найти все сообщения от vurdalak21
 
Регистрация: 22.05.2021
Сообщений: 10

рони,
There is a special kind of apple tree that grows apples every day for n days. On the ith day, the tree grows apples[i] apples that will rot after days[i] days, that is on day i + days[i] the apples will be rotten and cannot be eaten. On some days, the apple tree does not grow any apples, which are denoted by apples[i] == 0 and days[i] == 0.

You decided to eat at most one apple a day (to keep the doctors away). Note that you can keep eating after the first n days.

Given two integer arrays days and apples of length n, return the maximum number of apples you can eat.

Пример 1:

Input: apples = [1,2,3,5,2], days = [3,2,1,4,2]
Output: 7
Пояснение: вы можете съесть 7 яблок:
- В первый день вы едите яблоко. которые выросли в первый день.
- На второй день вы едите яблоко, которое выросло на второй день.
- На третий день вы едите яблоко, которое выросло на второй день. После этого дня яблоки, выросшие на третий день, загнивают.
- С четвертого по седьмой день вы едите яблоки, выросшие на четвертый день.
Пример 2:

Input: apples = [3,0,0,0,0,2], days = [3,0,0,0,0,2]
Output: 5
Пояснение: Вы можете съесть 5 яблок:
- С первого по на третий день вы едите яблоки, выросшие в первый день.
- Ничего не делайте в четвертый и пятый дни.
- На шестой и седьмой день вы едите яблоки, выросшие на шестой день.


let eatenApples = function(apples, days) {
    const arr = [];
    let totalApple = 0;
    
    for(let i = 0; i < apples.length; i++) {
        arr.push([i + days[i], apples[i]]);
        
        totalApple++;
        
    }
    
    return totalApple;
};
Ответить с цитированием
  #4 (permalink)  
Старый 22.05.2021, 20:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

vurdalak21,
за развёрнутое пояснение спасибо, жаль пока не могу ничем помочь, не понимаю условия задачи.
Ответить с цитированием
  #5 (permalink)  
Старый 22.05.2021, 21:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

vurdalak21,
let eatenApples = function(apples, days) {
    let totalApple = 0;
    let current = 0;
    for (let k of days) {
        if (!k) k = 1;
        for (let i = 0; i < k; i++) {
            let index = apples.findIndex((a, i) => i <= current && i > current - 3 && a);
            if (index !== -1) {
                totalApple++;
                apples[index]--
            }
            current++;
        }
    }
    return totalApple;
};
let apples = [1, 2, 3, 5, 2], days = [3, 2, 1, 4, 2];
console.log(eatenApples(apples, days)) // 7
apples = [3, 0, 0, 0, 0, 2], days = [3, 0, 0, 0, 0, 2]
console.log(eatenApples(apples, days)) // 5

Последний раз редактировалось рони, 22.05.2021 в 21:45.
Ответить с цитированием
  #6 (permalink)  
Старый 23.05.2021, 10:30
Интересующийся
Отправить личное сообщение для vurdalak21 Посмотреть профиль Найти все сообщения от vurdalak21
 
Регистрация: 22.05.2021
Сообщений: 10

рони,
спасибо
Ответить с цитированием
  #7 (permalink)  
Старый 23.05.2021, 10:55
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

рони,
На [6, 1, 1], [16, 1, 1] должно быть 8, а получается 5.

Тут явно задачка на приоритетную очередь (можно взять двоичную кучу, поскольку количество элементов известно). Каждый день определяем дату протухания очередной порции, и засовываем пару {count, expire} в очередь, так что первым элементом будет пара с минимальным expire. Пока оный expire меньше текущего дня, удаляем. В итоге наверху останется минимальный, но ещё годный expire. Из неё и забираем яблочко, а если count обнулился, тоже удаляем. Сложность O(N*ln(N))

Доберусь до компа, напишу говнокод.
Ответить с цитированием
  #8 (permalink)  
Старый 23.05.2021, 11:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от Alexandroppolus
должно быть 8, а получается 5.
яблоки у них червивые, есть невозможно)))
из любого количества яблок в день, максимум что можно съесть это 3, остальное по условию сгнивает.
[6, 1, 1] => [3, 1, 1] => 5

Последний раз редактировалось рони, 23.05.2021 в 11:05.
Ответить с цитированием
  #9 (permalink)  
Старый 23.05.2021, 12:35
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от рони
из любого количества яблок в день, максимум что можно съесть это 3
Что-то не нашёл такого поинта в условии..
Ответить с цитированием
  #10 (permalink)  
Старый 23.05.2021, 14:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Alexandroppolus,
Цитата:
that is on day i + days[i] the apples will be rotten and cannot be eaten.
возможно я неправильно понял условия задачи

Последний раз редактировалось рони, 23.05.2021 в 14:27.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачку sanderleik Javascript под браузер 3 18.07.2020 16:10
Помогите решить задачку на jQuery. Готов заплатить. shevgeny Javascript под браузер 1 05.05.2014 12:07
Помогите решить задачку. Андрей_ Javascript под браузер 3 26.06.2012 16:21
Помогите решить задачку (Простую но непонятную) Suharik Элементы интерфейса 15 01.06.2010 22:30
Помогите решить задачку valero Элементы интерфейса 10 07.03.2010 16:41