組合數遞推

有些初學者可能不知道比較大的組合數怎麼求,因爲如果用組合數的定義公式


來求很快就溢出了。

爲了求出更大的組合數可以利用組合數的遞推公式C(n,m)=C(n-1,m-1)+C(n-1,m)

下面給出代碼:

#include<iostream>
using namespace std;
long long C[100][100];
int main()
{
    for(int i=1;i<50;++i)
    {
        C[i][i]=1;
        C[i][0]=1;
    }
    for(int i=1;i<50;++i)
    {
        for(int j=i+1;j<50;++j)
        {
            C[j][i]=C[j-1][i-1]+C[j-1][i];
        }
    }
    int m,n;
    while(cin>>m>>n)///C(m,n)
    {
        cout<<C[m][n]<<endl;
    }
    return 0;
}



C(n,m)=C(n-1,m-1)+C(n-1,m)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章