Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
1 / 1 / 0
Регистрация: 14.12.2014
Сообщений: 123

Динамическое программирование: найти безопасные пути для кузнечика

09.02.2015, 00:30. Показов 6757. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
кузнечик может прыгать на 1,2 или 3 позиции. на некоторых позициях сидят лягушки, которые съедают кузнечика. необходимо подсчитать, сколько существует безопасных путей из 0 в N

C++
1
2
3
4
    a[0] = 1; a[1] = 1; a[2] = 2; a[3] = 4;
    for (i = 4; i <= n; i++)
        a[i] = a[i - 1] + a[i - 2] + a[i - 3];
    count = a[n];
какие дальнейшие действия с переменной count нужно совершить, чтобы прийти к ответу?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.02.2015, 00:30
Ответы с готовыми решениями:

Динамическое программирование для задачи о рюкзаке
Здравствуйте, программа написана, но решение не верно. Помогите найти ошибку, пожалуйста! using System; using...

Динамическое программирование: найти количество N-значных трипростых чисел
Будем называть натуральное число трипростым, если в нем любые подряд идущие 3 цифры образуют трехзначное простое число. Требуется найти...

Динамическое программирование: найти длину наибольшей возрастающей подпоследовательности
1. Дана последовательность, требуется найти длину её наибольшей возрастающей подпоследовательности. Вывести найденную...

4
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
09.02.2015, 06:59
igor_m,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int step(int pos, bool *way, int ln) {
    if (pos == ln) return 1;
    if (way[pos]) return 0; // true означает наличие лягушки
    return (pos+1 >= ln ? 1 : step(pos+1, way, ln)) + (pos+2 >= ln ? 1 : step(pos+2, way, ln)) + (pos+3 >= ln ? 1 : step(pos+3, way, ln));
}
 
int main(int argc, const char * argv[]) {
    bool way[6] = {false, false, false, true, false, false};
    std::cout << "Result:" << step(0, &way[0], 6) << std::endl;
    return 0;
}
0
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
09.02.2015, 16:37
как правило задается массив из 1 и 0 где 1 значит лягушку а 0 - нет лягушки.
и да ,почему вы уверенны что
C++
1
 a[0] = 1; a[1] = 1; a[2] = 2; a[3] = 4;
, разве на этих позициях лягушки не может быть?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int main(){
    int a[1234], d[1234];
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)cin >> a[i];
    d[0] = 0,d[1]=0,d[2]=0;
    d[3] = 1;
    int e = 4;
    if (a[0]){
        cout << "No paths";
        return 0;
    }
    for (int i = 1; i < n; i++){
        if (a[i]){
            d[e] = 0;
        }
        else{
            d[e] = d[e - 1] + d[e - 2] + d[e - 3];
        }
        e++;
    }
    cout << d[n+3-1];
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от igor_m Посмотреть сообщение
какие дальнейшие действия с переменной count нужно совершить, чтобы прийти к ответу?
если вы подсчитываете кол-во путей в динамике до N-го элемента ,то очевидно что в N-ной клетке динамики будет лежать ответ
0
1 / 1 / 0
Регистрация: 14.12.2014
Сообщений: 123
10.02.2015, 21:39  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <windows.h>
#pragma hdrstop
#include "pt4.h"
#include <fstream>
#include <string>
 
void Solve()
{
    Task("Dyn4");
    int a[100], i, n, temp;
    bool frog[100];
    ifstream f;
    ofstream g;
    string FN1, FN2;
    pt >> FN1 >> FN2;
    f.open(FN1.c_str());
    g.open(FN2.c_str());
    f >> n;
    n++;
    while (!f.eof())
    {
        f >> temp;
        frog[temp] = true;
    }
    a[0] = 1; a[1] = 1; a[2] = 2;
    for (i = 3; i <= n; i++)
        if (frog[i] == true)
            a[i] = 0;
        else
            a[i] = a[i - 1] + a[i - 2] + a[i - 3];
    g << a[n - 1];
    f.close();
    g.close();
}
не работает только если лягушка сидит на 1 или 2 позиции. подскажите, как нужно исправить
0
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
10.02.2015, 22:27
если лягушка сидит на 1 позиции то путей нет ,если на второй то
C++
1
2
3
a[0]=1;
a[1]=0;
a[2]=1;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.02.2015, 22:27
Помогаю со студенческими работами здесь

Динамическое программирование. Требуется идея для решения. Общая подпоследовательность
Заданы две строки длиной не больше 10000. Нужно найти самую хорошую подпоследовательность, которая имеет не только большую длину, но еще...

Нужна задача для курсовой "Динамическое программирование. Метод обратной прогонки"
Для моей курсовой работы нужно реализовать алгоритм в VBA по теме: &quot;Динамическое программирование. Метод обратной прогонки&quot; Но я не...

Динамическое изменение пути файла в компоненте MediaPlayer1
Доброго всем дня. Скажите пожалуйста, возможно ли сделать так, что бы путь к файлу указывался динамически, то есть у нас есть песня, мы...

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

Динамическое программирование
Не понимаю динамических структур, списков, работы с ними. Посоветуйте источник изучения. Что-то вроде того что написано здесь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru