讨论 / What is wrong?
Mato完整版 2009-01-21 18:51:00
点我顶贴 收藏 删除
{$H+}

VAR

n, m, res: LONGINT;

a, s: ARRAY[1..400, 0..400] OF LONGINT;

f, f2: ARRAY[1..400] OF LONGINT;

PROCEDURE init;

VAR

i, j: LONGINT;

s: STRING;

BEGIN

READLN(n, m);

FOR i:=1 TO n DO BEGIN

READLN(s);

FOR j:=1 TO m DO

IF s[j] = ’0’ THEN a[i, j] := -1 ELSE a[i, j] := 1;

END;

END;

PROCEDURE xxx;

VAR

i, j, k, max: LONGINT;

BEGIN

FOR i:=1 TO m DO s[0, i] := 0;

FOR i:=1 TO n DO

FOR j:=1 TO m DO s[i, j] := s[i - 1, j] + a[i, j];

res := 0;

FOR i:=1 TO n DO

FOR j:=i TO n DO BEGIN

FILLCHAR(f, SIZEOF(f), 0);

FOR k:=1 TO m DO f[k] := s[j, k] - s[i - 1, k];

FILLCHAR(f2, SIZEOF(f2), 0);

f2[1] := f[1];

FOR k:=2 TO m DO BEGIN

IF f2[k - 1] + f[k] > f[k] THEN

f2[k] := f2[k - 1] + f[k]

ELSE

f2[k] := f[k];

END;

max := 0;

FOR k:=1 TO m DO

IF f2[k] > max THEN max := f2[k];

IF max > res THEN res := max;

END;

END;

BEGIN

init;

xxx;

WRITELN(res);

END.

第8个点WA了。

#1 Mato完整版@2009-01-21 18:51:00
回复 删除
原来如此...

把所有的1..400改为0..400就对了。

状态: Accepted

测评机: Xeost[5]

得分: 100分

提交日期: 2009-1-22 10:49:00

有效耗时: 4000毫秒

测试结果1: 通过本测试点|有效耗时172:ms

测试结果2: 通过本测试点|有效耗时47:ms

测试结果3: 通过本测试点|有效耗时172:ms

测试结果4: 通过本测试点|有效耗时218:ms

测试结果5: 通过本测试点|有效耗时250:ms

测试结果6: 通过本测试点|有效耗时297:ms

测试结果7: 通过本测试点|有效耗时547:ms

测试结果8: 通过本测试点|有效耗时828:ms

测试结果9: 通过本测试点|有效耗时766:ms

测试结果10: 通过本测试点|有效耗时703:ms

查看更多回复
提交回复