您的位置:首页 > 其它

HDOJ2519 新生晚会

2009-04-02 17:59 162 查看
http://hi.baidu.com/chenghui2050/blog/item/84c552ad525c8f0f4b36d688.html

新生晚会这道题出看可能是比较简单的,无非就是C(n,m)而已,只要注意n>m时输出0就OK了!但是这道题当时的AC率只有9%左右。如果用传统的C(n,m)=n!/(m!*(n-m)!)来做,抱歉WA。我当初就是这样做的,马上想到了C(n,m)=C(n-1,m)+C(n-1,m-1)。对,这样就是正解!

#include <iostream>
using namespace std;
int c[35][35];
int main()
{
int i,j,k,n,m,t;

for (i=1;i<=30;i++)	//m = 0;
{
c[i][0] = 1;
}
c[1][1]  =1;
for (j=2;j<=30;j++)
{
c[1][j] = 0;
}
//-----------------------------------------------
for (i=1;i<=30;i++)
{
for (j=1;j<=30;j++)
{
if(i==1 && j==1)
break;
else if (j == i)
{
c[i][j] = 1;
}
else if (j>i)
{
c[i][j] = 0;
}
else
c[i][j] = c[i-1][j] + c[i-1][j-1];
}
}

scanf("%d",&t);
while (t--)
{
scanf("%d %d",&n,&m);
printf("%d/n",c
[m]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: