给你n个自然数,从中任意选m(m
问题描述:
给你n个自然数,从中任意选m(m
答
这个可以用排列组合,也可以用乘法原理,排列组合的话是
Cm,n=n!/(m!*(n-m)!)
乘法原理的话,就是,在选第一个数的时候,有n种选法,在选第二个数的时候,由于第一个数选了一个,剩了n-1个数,所以有n-1种选法,以此类推,到选第m个数的时候,有n-m种选法,把所有的乘起来就是n*(n-1)*(n-2)*(n-3)*...*(n-m),但是,这些里面有重复的,所以还要除以,合起来就是
(n*(n-1)*(n-2)*(n-3)*...*(n-m))/(1*2*3*...*m)
其实上面的Cm,n化简了之后,就是
(n*(n-1)*(n-2)*(n-3)*...*(n-m))/(1*2*3*...*m),挑你能看懂的看吧~
程序的话,就是一个阶乘,或者用递归也能做,不过那个递归的方法需要知道一些关于排列组合的公式,如果m,n范围比较大的话,还需要用到高精度算法