/**
m中选择n个数的组合的数量
公式:C(m, n)=m*(m-1)*(m-2)...<n个数>/n*(n-1)*(n-2)...1
eg:C(10, 5)=(10*9*8*7*6)/(5*4*3*2*1);
@param m 数组中元素的总数
@param n 数组中选择n个数
@return 组合的数量
*/
+ (NSInteger)getCombineCountWithM:(NSInteger)m n:(NSInteger)n
{
NSInteger result = 0;
if (m == n) {
result = 1;
}else if (m == n+1) {
result = m;
}else if (m > n+1) {
//C(m,n)
NSInteger numerator = 1;
for (NSInteger i=n; i>0; i--) {
numerator = numerator * i;
}
NSInteger denominator = 1;
for (NSInteger j=m; j>m-n; j--) {
denominator = denominator * j;
}
result = denominator/numerator;
}else{
result = 0;
}
return result;
}
m中选择n个数的组合的数量
最新推荐文章于 2021-12-20 22:56:12 发布