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

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


MYYA
浏览 1621回答 2
2回答

MM们

就用二分递归法,辅以记忆法优化,去除重复计算的过程,可以做到时间复杂度为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));}

慕丝7291255

这个东西,是超级计算机才能计算的。我试了一下,N=50,M=22的时候是很大的数量级了,在计算的过程中会产生很大的变量,导致内存溢出。一般的PC很难算。应该没有可以解决的办法。
打开App,查看更多内容
随时随地看视频慕课网APP