Форум программистов, компьютерный форум CyberForum.ru

Скорректировать циклы под задачу - C++

Восстановить пароль Регистрация
 
Марри
 Аватар для Марри
0 / 0 / 0
Регистрация: 09.02.2012
Сообщений: 9
05.05.2012, 02:33     Скорректировать циклы под задачу #1
Задача. Любимое занятие котенка Мурхика - прыгать по лесенке вверх, перепрыгивая через ступеньки. Лестница имеет определенное количество ступенек N. Котенок может одним прыжком преодолеть не более К ступенек. Для разнообразия Мурзик пытается каждый раз найти новый путь к вершине лестницы. Студентам второго курса факультета экономической информатики стало интересно, сколько различных способов есть у котенка добраться до вершины лестницы при заданных значениях К и N.

Напишите программу, которая поможет вычислить это количество. Например, если К=3 и N=4, то существуют следующие маршруты: 1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2, 1+3, 3+1. Т.е. при данных значениях у котенка всего 7 различных маршрутов добраться до вершины лестницы.

Вот есть код, только необходимо немного скорректировать циклы, путаюсь не могу сама этого правильно сделать:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
int main()
 
{
 
// Решение методом динамического программирования int N;
 
long long F[31];
 
scanf("%d",&N);
 
F[1]=1;F[2]=2;F[3]=4; 
 
for(int i=4; i <= N; i++)
 
F[i]=F[i-1]+F[i-2]+F[i-3];
 
printf("%I64d",F[N]);
 
return 0;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2012, 02:33     Скорректировать циклы под задачу
Посмотрите здесь:

C++ проверить задачу
C++ Переделать задачу под другой тип данных
C++ исправить задачу
C++ Переделать задачу под бинарные файлы
ЛИНЕЙНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ. Прошу скорректировать C++
Нужно скорректировать задачу со структурами C++
Код не работает, нужно скорректировать C++
C++ Запуск JVM из под плюсов, запущенных под Wine!

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
05.05.2012, 05:59     Скорректировать циклы под задачу #2
Марри, Вам видимо сюда:
Заец. Его любимое занятие - прыгать по лесенке вверх, перепрыгивая через ступеньки...
thick_int
Заблокирован
05.05.2012, 14:22     Скорректировать циклы под задачу #3
А вообще то задача интересная, но, по всей видимости еще не решенная.

Добавлено через 1 час 35 минут
Вот мое решение:

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
class Task
{
public:
    static long long decisions;
    Task(long long k, long long n) : K(k <= n ? k : n), N(n) {} //можно обойтись менее мощным котенком
    void Decide()
    {
        if (K == 1)
            ++decisions;
        else if (K == N)
        {
            ++decisions; //котенок прыгает сразу на верхнюю ступеньку
            Task subTask(K-1, N); //после можно обойтись менее мощным котенком
            subTask.Decide();
        }
        else
        {
            for (long long i = 1; i <= K; ++i)
            {
                long long M = N - i;
                if (M == 0)
                    break;
                else
                {
                    Task subTask(K, M); //очевидное сведение к более простым задачам
                    subTask.Decide();
                }
            }
        }
    }
private:
    long long K;
    long long N;
};
 
long long Task::decisions(0);
 
 
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{   
    long long power;
    long long steps;
    cout << "Enter kitten power: ";
    cin >> power;
    cout << "Enter number of steps: ";
    cin >> steps;
    Task MyTask(power, steps);
    MyTask.Decide();
    cout << "The kitten with power " << power << " on the stairs with " << steps << " steps has" << endl;
    cout << Task::decisions << " ways to climb up the top of this stair."<< endl;
 
    return 0;
}
Yandex
Объявления
05.05.2012, 14:22     Скорректировать циклы под задачу
Ответ Создать тему
Опции темы

Текущее время: 16:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru