为了账号安全,请及时绑定邮箱和手机立即绑定

c#求一个高效的组合算法,N个数选M个数的组合?

c#求一个高效的组合算法,N个数选M个数的组合?

C#
MYYA 2019-02-08 11:07:20
c#求一个高效的组合算法,N个数选M个数的组合
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

就用二分递归法,辅以记忆法优化,去除重复计算的过程,可以做到时间复杂度为O(n^2),计算C(50,22)就要 0.005秒

自己写的代码,计算C(n,m):

static __int64 table[100][100]={{0,0}};
__int64 combination(int n,int m)
{
if(table[n][m]!=0)
return table[n][m];
if(m==0 || m==n)
return 1;
if(m==1)
return n;
return (table[n-1][m-1]=combination_3(n-1,m-1)) + (table[n-1][m]=combination_3(n-1,m));
}



查看完整回答
反对 回复 2019-03-04
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

这个东西,是超级计算机才能计算的。
我试了一下,N=50,M=22的时候是很大的数量级了,在计算的过程中会产生很大的变量,导致内存溢出。
一般的PC很难算。
应该没有可以解决的办法。

查看完整回答
反对 回复 2019-03-04
  • 2 回答
  • 0 关注
  • 1620 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信