Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
amoteo
-2 / 0 / 0
Регистрация: 28.10.2017
Сообщений: 33
1

Функция вычисления количества сочетаний

31.12.2018, 16:58. Просмотров 1669. Ответов 4
Метки нет (Все метки)

Код особо ненадо а вот формула что тут n и k умножать вычитать???
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2018, 16:58
Ответы с готовыми решениями:

Функция вычисления биномиального коэффициента по формуле сочетаний
Нужно написать функцию, которая будет считать по формуле сочетаний n!/((k!)(n-k)!). Заголовок...

Рекурсивная функция для вычисления количества цифр натурального числа
Нужно написать рекурсивную функцию для вычисления количества цифр натурального числа. Подскажите...

Функция вычисления количества серий из подряд стоящих простых элементов
Здравствуйте. Вот задание: Задан массив Z(m) целых чисел. Определить, содержит ли массив серии...

Вычисление количества сочетаний динамическим способом
Всем привет. Мне надо написать программу на с++, которая будет считать по формуле Ckn динамическим...

Составить программу вычисления числа сочетаний из N по M
Выручайте ( Составить программу вычисления числа сочетаний из N по M. Число сочетаний определяется...

4
amoteo
-2 / 0 / 0
Регистрация: 28.10.2017
Сообщений: 33
31.12.2018, 17:06  [ТС] 2
888
0
Миниатюры
Функция вычисления количества сочетаний  
DG_ReFLeX
12 / 9 / 3
Регистрация: 26.12.2018
Сообщений: 15
31.12.2018, 17:33 3
Лучший ответ Сообщение было отмечено amoteo как решение

Решение

Конкретную формулу сложно сказать, ибо используется рекурсия. Но вот вам готовое решение.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int C(int,int);
int main(){
  int n,k;
  cout << "Enter n:";
  cin >> n;
  cout << "Enter k:";
  cin >> k;
  cout << "C(n,k)= " << C(n,k) << endl; 
  return 0;
}
 
int C(int n, int k){
  if (k == 0 || n == k) return 1;
  else return C(n-1,k-1) + C(n-1,k);
}
Могу объяснить, что есть что, в случае необходимости.
2
DG_ReFLeX
12 / 9 / 3
Регистрация: 26.12.2018
Сообщений: 15
31.12.2018, 17:43 4
Лучший ответ Сообщение было отмечено amoteo как решение

Решение

Есть основная формула для нахождения количества сочетаний (см. вложение).
Можно определить, что если k = 0, то C(n,k) = 1.
Также, если k = n, то по формуле C(n,k) = 1.
Поэтому в коде появляется данная строчка:
C++
1
if (k == 0 || n == k) return 1;
Также по условию вам известно C(n,k) = C(n-1,k-1) + C(n-1,k), поэтому в коде появляется строчка №17:
C++
1
else return C(n-1,k-1) + C(n-1,k);
Которая рекурсивным методом будет вызывать саму себя до тех пор, пока k != n или k!=0.
2
Изображения
 
Байт
Эксперт C
22101 / 13780 / 2913
Регистрация: 24.12.2010
Сообщений: 29,421
01.01.2019, 21:07 5
DG_ReFLeX, Все это правильно и хорошо. Но в настоящее время лучшим способом считается вычисление Cnk с помощью подходов Динамического Программирования. Смысл коего в том, что уже вычисленные элементы треугольника Паскаля запоминаются. Да, требуется небольшое количество дополнительной памяти. Но скорость возрастает резко.
1
01.01.2019, 21:07
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2019, 21:07

Функции вычисления количества дней заданного месяца и количества месяцев между двумя датами
Область first - положительное целое число , год; second - положительное целое число от 1 до 12 -...

Разработать рекурсивную функцию, для вычисления числа сочетаний

Алгоритм вычисления числа сочетаний, используя рекуррентную формулу
Запрограммировать рекурсивный алгоритм вычисления числа сочетаний, используя рекуррентную формулу


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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