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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Марри
0 / 0 / 0
Регистрация: 09.02.2012
Сообщений: 9
#1

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

05.05.2012, 02:33. Просмотров 320. Ответов 2
Метки нет (Все метки)

Задача. Любимое занятие котенка Мурхика - прыгать по лесенке вверх, перепрыгивая через ступеньки. Лестница имеет определенное количество ступенек 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++
Я определила структуру «студент», поля структуры: ФИО, массив элементов структуры «дисциплина» (не менее 4-х элементов, результаты сдачи...

Переделать задачу под С++ с рекурсией - C++
Здравствуйте,нужно переделать данную задачу с паскаля на С++ с использованием рекурсии.Нужна помощь. Вот условие к ней Вычислить...

Подобрать оптимальный контейнер под задачу - C++
Есть структура типа: struct Cell { int id; //..и много ещё чего } В общем, таких объектов такого типа очень...

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

Переделать задачу под другой тип данных - C++
Нужно переделать задачу под тип string Программа заменяет букву в начале каждого слова на букву верхнего регистра ...

Скорректировать код С++ - C++
Добрый вечер, прошу помочь скорректировать код, что бы он заработал(условие прикрепил во вложении): #include &lt;iostream&gt; #include...

Код не работает, нужно скорректировать - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;RUS&quot;); int n, m, st = -1, c; ...

Найти значение тригонометрического выражения по заданной формуле (скорректировать код) - C++
Добрый день, прошу помочь скорректировать код, дело в том что при каждом запуске программа по разному себя ведет, то выдает рандомные...

Заменить в коде циклы for на циклы while - C++
int i, j, n; bool a; cin &gt;&gt; i &gt;&gt; n; for (i; i&lt;n; i++) { a = true; for (j = 2; j &lt;= i / 2; j++) if ((i%j) == 0) a =...

Запустить проект под windows на c++ из-под javascript - C++
Есть проект на C++, скомпиленный под виндоус. Задача - запустить его из javascript и передать туда кое-какие параметры (скорее всего, 2...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
4669 / 2495 / 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     Скорректировать циклы под задачу
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru