Problem Description
开学了,杭电又迎来了好多新生。ACMer想为新生准备一个节目。来报名要表演节目的人很多,多达N个,但是只需要从这N个人中选M个就够了,一共有多少种选择方法?
 
Input
数据的第一行包括一个正整数T,接下来有T组数据,每组数据占一行。
每组数据包含两个整数N(来报名的人数,1<=N<=30),M(节目需要的人数0<=M<=30)
 
Output
每组数据输出一个整数,每个输出占一行
 
Sample Input
5
3 2
5 3
4 4
3 6
8 0
 
Sample Output
3
10
1
0
1
 

刚开始的思路

二项式系数C(nk)满足下面的要求:

C(n, 0) = C(nn) = 1 for all n > 0;
C(nk) = C(n − 1, k − 1) + C(n − 1, k) for all 0 < k < n.
题目要求根据给定的n和k(0 ≤ k ≤ n < 231n > 0)计算C(n,k),典型的递归问题。
但是如果采用递归,当n的值比较大的时候,会堆栈益处。而上面的表达式应该有相应的公式。如果采用公式计算就会变的简单了。
但是总是WA,最后发现是超出范围!!!
 #include <stdio.h>
#include <iostream>
using namespace std;
int zuhe(int n,int k)
{
int *result = new int[n];
for(int i=;i<=n;i++)
{
result[i] = ;
for(int j=i-;j>=;j--)
{
result[j] = result[j-]+result[j];
}
result[] = ;
}
return result[k];
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int a,b;
scanf("%d%d",&a,&b);
if(b>a)
{
printf("0\n");
continue;
}
printf("%d\n",zuhe(a,b));
}
return ;
}

可以这样:

 #include<iostream>
using namespace std;
int c[][];
int main()
{
int i,j;
for(i=;i<;i++)
{c[i][]=;c[i][]=i;}
for(i=;i<;i++)
for(j=;j<=i;j++)
c[i][j]=c[i-][j]+c[i-][j-];
int t,n,m;
while(scanf("%d",&t)!=EOF)
{
while(t--)
{
scanf("%d%d",&n,&m);
printf("%d\n",c[n][m]);
}
}
return ;
}

之后通过了解:

 #include <iostream>
#include <cstdio>
using namespace std;
int main(void)
{
int m,n,t;
long long sum;
cin>>t;
while(t--)
{
cin>>n>>m;
sum=;
for(int i=;i<=m;i++)
{
sum*=n--;
sum/=i;
}
printf("%lld\n",sum);
}
return ;
}

最新文章

  1. Java程序设计之链表结构
  2. RCF进程间通信Demo程序
  3. EUI ViewStack实现选项卡组件
  4. 一个demo让你彻底理解Android触摸事件的并发
  5. div基础
  6. 轻量级模块化开发框架 Hasor 核心模块 v0.0.2 发布
  7. PB建数据窗口的时候会报内存错误
  8. fedora
  9. Unity欢迎窗口的信息
  10. [linux] linux知识积累(不断更新中&hellip;)
  11. AsyncTask使用注意事项
  12. Spring——jar包详解
  13. Android shared_preference操作
  14. 网络编程之socketserver
  15. 如何使用CSS 让Table的最后一列的右边框不显示
  16. 【模板】ac自动机
  17. (转)linux进程 linux线程 信息查看 ps top pstree
  18. Web设计中打开新页面或页面跳转的方法
  19. 同步工具:CountDownLatch、CyclicBarrier和Semaphore
  20. spring学习 十 schema-based 异常通知,和环绕通知

热门文章

  1. Windows Azure应用系列:微软的云部署VPN
  2. sails 相关文章
  3. Shibboleth
  4. 用bat 删除当前文件夹下的某类文件
  5. LightOJ1010---Knights in Chessboard (规律题)
  6. android 常见的解决(mdpi、hdpi 、xhdpi、xxhdpi )屏幕调整
  7. ComboBox 自动调整组合框下拉部分的宽度
  8. Chapter 1 Securing Your Server and Network(7):禁用SQL Server Browse
  9. mac提升yosemite后php 扩展修复
  10. mouseover与mouseenter与mousemove差额mouseout与mouseleave差额