hdu 2067 小兔的棋盘【关于Catalan数的一点学习】
2014-03-04 19:59
253 查看
hdu 2067 小兔的棋盘 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2067
background knowledge:什么是卡特兰数呢?给出一个实例来引出,一个栈(无穷大)的进栈序列为1,2,3,……,n,有多少个不同的出栈序列?凡是符合这个特征的数都是卡特兰数,其前几项为1,1,2,5,14,42,132…。由于课本上也没给出推导证明,这里就不深究了,只给出公式(两递推一通项)。
formula:
(I)h(n)=h(0)×h(n-1)+h(1)×h(n-2)+…+h(n-1)×h(0)
(n≥2)
(II)h(n)=((4n-2)/(n+1))×h(n-1)
(III)h(n)=C(2n,n)/(n+1) (n=1,2,3,…)
题目分析:为什么这个题要用卡特兰数呢?因为它的过程可以抽象成前例的样子,比如说先往下走,在往下走了一步的情况下,就可以往右走一步,这样向下走就等同于进栈,向右走就等同于出栈,有了卡特兰数的知识,这题就相当水了。(别忘了最后要乘2啊,因为只要满足不穿过对角线的话,先往下和先往右都可以的)
code:
#include<stdio.h>
__int64 a[36];
int main()
{
int i,j;
for(a[0]=1,i=1;i<36;i++)
{
for(j=0;j<=i;j++)
{
a[i]+=a[j]*a[i-j-1];
}
}
j=1;
while(~scanf("%d",&i),i!=-1)
{
printf("%d %d %I64d\n",j++,i,a[i]*2);
}
return 0;
}
PS:一个很悲伤的事实,杭电不认long long,我用long long交是wrong,另一个悲伤的事实是我的电脑用的linux不识别__int64,也就是说上面的代码放到我的机子上是Compile Error编不出来的……伤死我了……
background knowledge:什么是卡特兰数呢?给出一个实例来引出,一个栈(无穷大)的进栈序列为1,2,3,……,n,有多少个不同的出栈序列?凡是符合这个特征的数都是卡特兰数,其前几项为1,1,2,5,14,42,132…。由于课本上也没给出推导证明,这里就不深究了,只给出公式(两递推一通项)。
formula:
(I)h(n)=h(0)×h(n-1)+h(1)×h(n-2)+…+h(n-1)×h(0)
(n≥2)
(II)h(n)=((4n-2)/(n+1))×h(n-1)
(III)h(n)=C(2n,n)/(n+1) (n=1,2,3,…)
题目分析:为什么这个题要用卡特兰数呢?因为它的过程可以抽象成前例的样子,比如说先往下走,在往下走了一步的情况下,就可以往右走一步,这样向下走就等同于进栈,向右走就等同于出栈,有了卡特兰数的知识,这题就相当水了。(别忘了最后要乘2啊,因为只要满足不穿过对角线的话,先往下和先往右都可以的)
code:
#include<stdio.h>
__int64 a[36];
int main()
{
int i,j;
for(a[0]=1,i=1;i<36;i++)
{
for(j=0;j<=i;j++)
{
a[i]+=a[j]*a[i-j-1];
}
}
j=1;
while(~scanf("%d",&i),i!=-1)
{
printf("%d %d %I64d\n",j++,i,a[i]*2);
}
return 0;
}
PS:一个很悲伤的事实,杭电不认long long,我用long long交是wrong,另一个悲伤的事实是我的电脑用的linux不识别__int64,也就是说上面的代码放到我的机子上是Compile Error编不出来的……伤死我了……
相关文章推荐
- 关于感知学习模型机中空间任一点到超平面的距离公式的推导过程
- 关于Git的一点学习(二)
- 关于点聚合的一点学习
- 关于C#中AutoResetEvent和ManualResetEvent的一点学习心得
- 关于这几天学习的一点知识(js,thinkphp等)
- 关于学习MMU的一点感想
- 关于进程内存使用的一点学习和实践
- 关于学习技术的一点感触
- 关于感知学习模型机中空间任一点到超平面的距离公式的推导过程
- 关于学习 Flex 的一点建议(转载)
- 在言传中意会(关于学习Java的一点体会)
- hdu 2067 小兔的棋盘(Catalan数)
- 【分享】关于第10章-同时替换栈和.data中COOKIES来突破GS的一点学习心得
- 关于学习上的一点感知
- iOS学习爬坑记录8:关于自定义Cell的一点认识
- 关于win7下RemoveDPC学习到的一点东西
- 关于学习MMU的一点感想
- 关于初学者该选择学习ARM7还是ARM9的一点建议
- 关于感知学习模型机中空间任一点到超平面的距离公式的推导过程
- 关于在大学中如何学习的一点感悟