207 条题解

  • 0
    @ 2008-10-12 10:09:57

    dp

  • 0
    @ 2008-10-10 21:11:33

    PROGRAM P1122;

    VAR

    I:INTEGER;

    BEGIN

    READ(I);

    CASE I OF

    1:WRITE('1');

    2:WRITE('2');

    3:WRITE('5');

    4:WRITE('14');

    5:WRITE('42');

    6:WRITE('132');

    7:WRITE('429');

    8:WRITE('1430');

    9:WRITE('4862');

    10:WRITE('16796');

    11:WRITE('58786');

    12:WRITE('208012');

    13:WRITE('742900');

    14:WRITE('2674440');

    15:WRITE('9694845');

    END;

    END.

  • 0
    @ 2008-10-09 19:42:55

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    int g(int in,int out,int now)

    {

    if(out==n)return 1;

    if(in==0)return g(in,out+1,now-1);

    if(now==0)return g(in-1,out,now+1);

    return g(in-1,out,now+1)+g(in,out+1,now-1);

    } so easy!

    cout

  • 0
    @ 2008-10-08 11:29:07

    动态规划.

    设f(i,j,k)表示入栈序中有i个元素、栈内有j个元素,出栈列中有k个元素时最终的出栈序列个数,则:

    f(i,j,k)=f(i-1,j+1,k)+f(i,j-1,k+1)

    边界:f(0,0,n)=1,i或j等于-1则f(i,j,k)=0

    答案就是f(n,0,0)

  • 0
    @ 2008-10-04 22:26:25

    var n,ans:longint;

    procedure dfs(a,b,c:longint);

    begin

    if c=n then inc(ans)

    else

    begin

    if a>0 then dfs(a-1,b+1,c);

    if b>0 then dfs(a,b-1,c+1);

    end;

    end;

    begin

    read(n);

    ans:=0;

    dfs(n,0,0);

    writeln(ans);

    end.

    硬搜居然过了...

  • 0
    @ 2008-10-04 17:45:39

    怎么会这样?!

    编译通过...

    ├ 测试数据 01:运行超时...

    ├ 测试数据 02:运行超时...

    ├ 测试数据 03:运行超时...

    ├ 测试数据 04:运行超时...

    ├ 测试数据 05:运行超时...

    ├ 测试数据 06:运行超时...

    ├ 测试数据 07:运行超时...

    ├ 测试数据 08:运行超时...

    ├ 测试数据 09:运行超时...

    ├ 测试数据 10:运行超时...

    ---|---|---|---|---|---|---|---|-

    Unaccepted 有效得分:0 有效耗时:0ms

  • 0
    @ 2008-10-04 11:41:02

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

  • 0
    @ 2010-07-07 12:26:05

    卡特兰数。。。

  • 0
    @ 2008-09-29 20:06:21

    递归基础题。。。

    void f(int top,int tail,int time){

    if (time==n+1) {

    sum++;

    return;

    }

    if (top!=0) f(top-1,tail+1,time);

    f(top+1,tail,time+1);

    return;

    }

  • 0
    @ 2008-09-25 17:05:42

    catalan数列

    s:=1;

    for i:=1 to n do

    s:=s*(2*n-i+1) div i;

    s:=s div (n+1);

    write(s);简单啊!

  • 0
    @ 2008-09-23 21:32:57

    卡特兰数列。。。。。

    so easy!!!

  • 0
    @ 2008-09-09 18:41:56

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

  • 0
    @ 2008-08-30 12:22:52

    ......

  • 0
    @ 2008-08-26 10:17:20

    找找规律,交表就行了。不过要注意小数点和初始化!!!

  • 0
    @ 2008-08-23 12:14:05

    递推递归都可以过~~

  • 0
    @ 2008-08-16 12:55:44

    出栈次序问题是Catalan数……

    设h(0)=1;h(1)=1;

    则catalan数满足递归式:

    h(n)= h(0)*h(n-1) + h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2)

    该递推关系的解为:

    h(n)=c(2n,n)/(n+1) (n=1,2,3,...)

  • 0
    @ 2008-08-12 22:40:13

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

  • 0
    @ 2008-08-09 21:15:17

    DP:

    f[0]=1(i=1)

    f[i]+=f[j]*f;(n>=i>=1 n>=j>=0)

  • 0
    @ 2008-08-08 14:04:59

    巨快的PUPPY

    死搜0MS

  • 0
    @ 2007-12-13 20:23:06

    最后一个点为208012

    我用double 居然208011

    通过率..

信息

ID
1122
难度
2
分类
组合数学 | Catalan数列 点击显示
标签
递交数
4093
已通过
2516
通过率
61%
被复制
22
上传者