@xxxx_videos

Как решить задачу про кузнечика путем динамического программирования?

По условию есть какое то количество кувшинок с разным количеством травы на каждой. оно может быть положительным и отрицательным. кузнечик изначально стоит на первой кувшинке, а прыгать может только либо через одну кувшинку, либо через две. нужно найти максимальное количество травы которую соберет кузнечик по пути к последней кувшинке.
на вход дается число n(количество кувшинок), и n разных чисел(количество травы на кувшинках). вывести нужно максимальное количество.
На одном из тестов программа выдает неправильный ответ. Какие там входные данные я не знаю, поэтому не могу понять что не так. помогите найти ошибку
#include <iostream>
using namespace std;

int max(int one, int two)
{
    if (one > two)
        return one;
    return two;
}

int main()
{

    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);

    int N;
    int a[1000];
    cin >> N;
    for (int i = 0; i < N; i++)
        cin >> a[i];
    a[2] = a[0] + a[2];
    a[3] = a[0] + a[3];
    a[4] = a[2] + a[4];
    for (int i = 5; i < N; i++)
        a[i] += max(a[i - 2], a[i - 3]);
    cout << a[N - 1];
}
  • Вопрос задан
  • 384 просмотра
Пригласить эксперта
Ответы на вопрос 2
Alexandroppolus
@Alexandroppolus
кодир
Кузнечику обязательно побывать на последней кувшинке?
Если нет (если можно её проскочить), то сделай в конце cout << max(a[N-2], a[N - 1]);
Ответ написан
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Опишите ваше динамическое программирование - физический смысл функции и рекуррентное соотношение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы