标签:blog http io ar os sp for 数据 on
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=2067
这个题目,题意都没有弄明白,有点难度啊!这个题目是个好题。
看了大牛的结题报告:
题目分析:
代码如下:
另外看别人的解题报告说这个是卡特兰数 ( 详细请查看 <<卡特兰数>> ), 其实现在还不理解, 分析如下:
附卡特兰代码:
我的代码
#include<stdio.h>
#include<string.h>
__int64 a[40];
int main(void)
{
__int64 i,j,k,n;
a[1]=1;
for(i=2;i<=35;i++)
a[i]=(4*i-2)*1.0/(i+1)*a[i-1];
k=1;
while(scanf("%I64d",&n)==1&&n!=-1)
{
printf("%I64d %I64d %I64d\n",k++,n,a[n]*2);
}
return 0;
}
这里有一个细节必须说一下 有 a*b/c 且a,b,c 是整数。 如果a*b很大数据漏出的话,改变成a/c*b是不行的 在于当 a%c!=0 时是不行的
可以这样处理 a*1.0/c*b 这样就可行了。
代码
#include<stdio.h>
int main(void)
{
__int64 dp[36][36];
int i,j,k=1,n;
while(scanf("%d",&n)==1&&n!=-1)
{
for(i=1;i<=n;i++)
dp[0][i]=1;
for(i=1;i<n;i++)
{
for(j=i;j<=n;j++)
{
if(i==j)
{
dp[i][j]=dp[i-1][j];
}
else
{
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
}
printf("%d %d %I64d\n",k++,n,2*dp[n-1][n]);
}
return 0;
}
标签:blog http io ar os sp for 数据 on
原文地址:http://www.cnblogs.com/liudehao/p/4113876.html