catalan数(poj1095)

来源:互联网 发布:停车场计费规则 java 编辑:程序博客网 时间:2024/04/30 20:39

  这题个人感觉算是递归的经典吧!

  这里给出一个这题的解题报告链接,个人感觉已经写得很好了。

http://blog.csdn.net/lvlu911/archive/2010/03/28/5425974.aspx

提示大家要注意的几点是要紧紧抓住递归方程的定义,这句:

递归函数fun(n,k)。即打印出拥有n个结点树的第k种状态。

可能大家对这句话不是怎么理解:

  对于s,该树的左子树编号为(s-1)/L[n-i-1]+1,右子树编号为(s-1)% L[n-i-1]+1

  我个人的理解是把状态数s先看成L[n-i-1]进制的数s-1(从0开始计数),则:

左子树对应的数应该是(s-1)/L[n-i-1],右子树对应的数应该是(s-1)%L[n-i-1]。

然后再转成我们需要的状态数(s-1)/L[n-i-1]+1,(s-1)% L[n-i-1]+1,即

状态->数->状态

  最后晒上自己的代码,方便以后复习,呵呵……