想不通

我是这样做的,可是怎么也想不通为什么错,更想不通为什么会输出负的

var

a:array[-2..17,-2..17] of integer;

b:array[-2..17,-2..17] of boolean;

i,x1,x2,y1,y2:integer;

function f(x,y:integer):integer;

var

s:integer;

begin

if b[x,y] then f:=a[x,y]

else begin s:=f(x-1,y)+f(x,y-1); b[x,y]:=true; f:=s; a[x,y]:=s; end;

end;

begin

read(x1,y1,x2,y2);

fillchar(a,sizeof(a),0);

fillchar(b,sizeof(b),false);

b[x2,y2]:=true;

b[x2+1,y2+2]:=true;

b[x2+1,y2-2]:=true;

b[x2-1,y2+2]:=true;

b[x2-1,y2-2]:=true;

b[x2+2,y2+1]:=true;

b[x2+2,y2-1]:=true;

b[x2+2,y2+1]:=true;

b[x2-2,y2-1]:=true;

b[x2-2,y2+1]:=true;

for i:=0 to x1 do begin a:=1; b:=true; end;

for i:=0 to y1 do begin a[0,i]:=1; b[0,i]:=true; end;

writeln(f(x1,y1));

end.

编译通过...

├ 测试数据 01:答案错误... ├ 标准行输出

 ├ 错误行输出

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

├ 测试数据 03:答案错误...程序输出比正确答案长

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

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

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

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

├ 测试数据 08:答案错误... ├ 标准行输出

 ├ 错误行输出

├ 测试数据 09:答案错误... ├ 标准行输出

 ├ 错误行输出

├ 测试数据 10:答案错误... ├ 标准行输出

 ├ 错误行输出

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

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

1 条评论

  • @ 2009-07-23 16:37:03

    可能是程序的数据范围定小了

    可能是程序的数据范围定小了,建议使用longint;至于第三组,我也没想通

  • 1

信息

ID
1121
难度
4
分类
动态规划 点击显示
标签
递交数
9572
已通过
3779
通过率
39%
被复制
23
上传者