组合数C(n,m)=C(n-1,m)+C(n-1,m-1) 即对于第n个,不选和选
组合数代码实现:(n>20时)
(方法2的证明,拍的歪了emmm)
//方法1:O(n^2)
int ans[maxn][maxn];
int n=5,m=3;
for(int i=1;i<=5;i++)
ans[i][i]=ans[i][0]=1;//i个里面选i个和i个里面选0个
for(int i=2;i<=n;i++)
for(int j=1;j<=i/2;j++)
{
ans[i][j]=ans[i-1][j]+ans[i-1][j-1];
ans[i][i-j]=ans[i][j];//避免再重复计算,直接赋值
}
cout<<ans[5][3]<<endl;
//方法2:O(m)
long long res=1;
for(int i=1;i<=m;i++)
res=res*(n-m+i)/i;
cout<<res<&

最低0.47元/天 解锁文章
1994

被折叠的 条评论
为什么被折叠?



