之前我曾经在CSDN上看过一些人求组合数的代码,他们的方式大多数都是C(n,m)=A(n,m)/A(m,m),甚至有一些是C(n,m)=n!/(n!(n-m)!),然后用一些额外的检测来防止溢出。但是我发现了一种更合理的方式,在这里分享一下。
思路:C(n,m)=C(n,m-1)*(n-m+1)/m
代码:
unsigned long long C(unsigned int y,unsigned int x){
if(x==0)
之前我曾经在CSDN上看过一些人求组合数的代码,他们的方式大多数都是C(n,m)=A(n,m)/A(m,m),甚至有一些是C(n,m)=n!/(n!(n-m)!),然后用一些额外的检测来防止溢出。但是我发现了一种更合理的方式,在这里分享一下。
思路:C(n,m)=C(n,m-1)*(n-m+1)/m
代码:
unsigned long long C(unsigned int y,unsigned int x){
if(x==0)