1 #include <stdio.h> 2 int combination(int n,int m) 3 { 4 int zhi; 5 if(m==0||n==m) 6 return 1; 7 else 8 zhi=combination(n-1,m-1)+combination(n-1,m); 9 return zhi; 10 } 11 int main() 12 { 13 int x,y; 14 scanf("%d %d",&x,&y); 15 printf("%d\n",combination(x,y)); 16 return 0; 17 }
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 int C(__int64 n,__int64 m) 2 { 3 __int64 j,i,k,p,t; 4 p=1; 5 k=1; 6 for(i=n;i>=n-m+1;--i) 7 { 8 k*=i; 9 } 10 for(j=1;j<=m;++j) 11 { 12 p*=j; 13 } 14 t=k/p; 15 return t; 16 }
组合数的递推公式
c(n,m)=c(n-1,m-1)+c(n-1,m)
出栈序列有公式S=C(n,2n)+C(n-1,2n);来自网络:
http://blog.163.com/wangenze_black@126/blog/static/110710515200962110481040/
2013-10-24 21:04:01