题解

55 条题解

  • 0
    @ 2009-07-28 16:11:42

    为什么这样搜索不可以啊??

    program Themoment;

    var

    n,i,j,best:longint;

    ak:array[1..30,1..30]of longint;

    p:array[1..30,0..31]of boolean;

    procedure init;

    var

    i,j:longint;

    begin

    read(n);

    fillchar(p,sizeof(p),false);

    for i:=1 to n do

    for j:=1 to i do

    begin

    read(ak);

    p:=true;

    end;

    for i:=n-1 downto 1 do

    for j:=i downto 1 do

    begin

    read(ak);

    p:=true;

    end;

    end;

    procedure shizhe( a,b,he:longint);

    var

    k,w:longint;

    begin

    if (a-1=0) then

    begin

    w:=he+ak[a,b];

    if w=0 then

    begin

    best:=0;

    writeln(best);

    exit;

    end;

    w:=he-ak[a,b];

    if w=0 then

    begin

    best:=0;

    writeln(best);

    exit;

    end;

    k:=abs(he);

    if k=0) then

    begin

    shizhe(a-1,b,he+ak[a-1,b]);

    shizhe(a-1,b,he-ak[a-1,b]);

    end;

    if p[a,b] and p[a-1,b+1] and (a-1>=0) then

    begin

    shizhe(a,b+1,he+ak[a-1,b+1]);

    shizhe(a,b+1,he-ak[a-1,b+1]);

    end;

    writeln(best);

    exit;

    end;

    begin

    best:=7000;

    init;

    shizhe(2*n-1,1,ak[2*n-1,1]);

    end.

  • 0
    @ 2009-07-26 17:05:50

    100题了,庆祝

  • 0
    @ 2009-07-25 15:01:33

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    a 记录第I行地J列可不可能算出值L

    分两段循环

    思想很简单

  • 0
    @ 2009-07-23 22:48:28

    20 行程序搞定.

    题解:

  • 0
    @ 2009-07-03 23:17:21

    莫名其妙的错误一大堆 最恶心的:

    输出只有一行,是你所求出的最接近零的计算结果的 【绝对值】 !

  • 0
    @ 2009-06-27 20:01:33

    这题好考细心呀。

    第一个数,记住正负都可以取。

    还有边界行列别搞错了。

  • 0
    @ 2009-06-19 15:19:55

    第四组数据很特殊吗,我的程序输出比正确答案长

  • 0
    @ 2009-06-17 20:45:33

    第一百题留念......

  • 0
    @ 2009-06-12 13:33:50

    fI行J列是否达到K

    分两步循环

    1:i,j=>i+1,j+1

    i+1,j-1

    2:i,j=>i+1,j-1

  • 0
    @ 2009-04-16 17:21:48

    比较常规的DP

  • 0
    @ 2008-12-20 15:58:28

    终于AC了

    我高兴啊

  • 0
    @ 2008-10-14 13:30:42

    我 哭了 交了9遍~

    想了半天终于找到原因了~

    我把 a 中的 i和J 循环时看反了~

  • 0
    @ 2008-10-14 07:44:20

    if (in)and(f[i+1,j,k-a])or(f[i+1,j,k+a])or(f[i+1,j+1,k-a])or(f[i+1,j+1,k+a]) then f:=true;

  • 0
    @ 2008-09-30 18:44:28

    数据范围这么小!全0ms!

  • 0
    @ 2007-11-01 15:26:26

    哎……

    很不爽阿,c里面没有负的数组下表……

    而且也没有boolean这么小的数据类型……

  • 0
    @ 2007-10-02 13:02:53

    AC的莫名其妙。

    搜索过程中有个条件有点问题。但奇异的过了。

  • 0
    @ 2007-08-09 13:18:58

    f[i+1,j+1,k+map]:=true;{自我批评下}

    f[i+1,j+1,k-map]:=true;{居然把I+1写成I}

    很无语的错误~~~四个字符,错了90分~~~

  • 0
    @ 2007-06-05 02:16:56

    DP题。

    从2*N-1 到N的 阶段的DP方程:

    f:=f[i+1,p-1,j-w[p]] or f[i+1,p,j-w[p]] or f[i+1,p-1, j+w[p]] or f[i+1,p ,j+w[p]] 但是第1和最后一个相邻的只有一个,要注意

    从第N-1 到1的 阶段的DP方程:

    f:=f[i+1,p,j-w[p]] or f[i+1,p+1,j-w[p]] or f[i+1,p,j+w[p]]

    or f[i+1, p+1, j+w[p]]

    最后的结果就是0S 的AC。

    可以加入滚动数组,但是不加也无所谓。

    要注意边界条件

  • 0
    @ 2007-04-21 21:55:45

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    步步为零...

  • 0
    @ 2006-12-23 16:48:32

    -1000..1000---|--80

    -2000..2000---|--90

    -3000..3000---|--100

信息

ID
1280
难度
6
分类
动态规划 点击显示
标签
(无)
递交数
1118
已通过
331
通过率
30%
被复制
3
上传者