https://pastein.ru/t/mO

  скопируйте уникальную ссылку для отправки


#include<iostream>
#define int long long
using namespace std;

int factorial(int n)
{
    int f=1;
    for(int i=2;i<=n;++i)
        f=f*i;
    return f;
}

int C_factorial(int n, int k)
{
    return factorial(n)/factorial(k)/factorial(n-k);
}

int C_rec(int n, int k)
{
    if (k==0 || k==n)
        return 1;
    else
        return C_rec(n-1,k-1)+C_rec(n-1,k);
}

int C_dp(int n, int k)
{
    int B[n+1][n+1];      // Создаем массив B из n+1 строки
    for(int i=0;i<=n;++i) // Заполняем i-ю строку массива
    {
       B[i][0]=1;         // На концах строки стоят единицы
       B[i][i]=1;
       for(int j=1;j<i;++j)
       {   // Заполняем оставшиеся элементы i-й строки
           B[i][j]=B[i-1][j-1]+B[i-1][j];
       }
    }
    return B[n][k];
}

main()
{
    cout << C_dp(8,6);
}