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

Подсчет количества способов, которыми можно разменять рубль медными монетами (достоинством 1, 2, 3, 5 копеек) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Интегралы. BC++ http://www.cyberforum.ru/cpp-beginners/thread648126.html
Помогите написать задачу. Именно борланд С++. Заранее спасибо!!!
C++ Составить процедуру (функцию) формирования массива. 1. Дано натуральное число N. Составить процедуру (функцию) формирования массива, элементами которого являются цифры числа N. Вот одна из задач с чего начать? Добавлено через 48 секунд ткните... http://www.cyberforum.ru/cpp-beginners/thread648125.html
C++ Задача по двумерным массивам
Помогите пожалуйста решить задачу в С++ "Дан двумерный массив размером m*n, заполненный случайными числами. Определить, есть ли в данном массиве столбец, в котором равное количество положительных и...
C++ Блок схема
Помогите нарисовать блок схему для данной программки #include <conio.h> #include <iostream.h> #include <math.h> double G_Result(double t, double s) { return (pow(t, 2) + pow(s, 2)) / (pow(t, 2)...
C++ Не могу найти ошибку в программе рисующей линию из символов http://www.cyberforum.ru/cpp-beginners/thread648074.html
Попытался написать консольную программу, рисующую линию из символов. Число символов вводится пользователем. Вот код программы: /** * @brief программа, которая выводит на экран горизонтальную,...
C++ Задачи с массивами Объясните, как решить. Пример 1. void *v=static_cast<void*>(&mas)// mas - массив это имелось в виду*? не пойму, что дальше делать, вижу, что надо написать функцию, но передать void* понятно, а... подробнее

Показать сообщение отдельно
Thinker
Эксперт С++
4227 / 2201 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
07.09.2012, 21:39
Цитата Сообщение от алишка999 Посмотреть сообщение
а что делать раз задали
Используйте рекурсивную функцию
F(n) = F(n-1) + F(n-2) + F(n-3) + F(n-5)
с начальными условиями
F(0) = 1,
F(x) = 0 при x < 0

получается 117372865913707249 способов. обычной рекурсией его не получить. Только с сохранением уже подсчитанного.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
const long N = 101;
 
long long F(long n)
{
   static long long count[N];
   if (n < 0)
      return 0;
   else if (count[n] != 0)
      return count[n];
   else if (n == 0)
      return (count[n] = 1);
   else
      return (count[n] = F(n-1) + F(n-2) + F(n-3) + F(n-5));
}
 
int main()
{
   std::cout << F(100);
   return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru