Блог пользователя optik

Автор optik, 13 лет назад, По-русски

Тестирующая система выдает ошибку Runtime после вывода правильного ответа, хотя после вывода ответа ни каких вычислений нет. На своем компьютере программа работает правильно. Вот код(Задача "фарфор" из #105):
program Project2;


{$APPTYPE CONSOLE}


{$R *.res}
var
n,m,i,j,v,s,maxx:integer;
p:array of array of integer;
b:array of array of boolean;

procedure rec(ii,u:integer);
var
i1,j1:integer;
begin
inc(v);
b[ii,u]:=false;
s:=s+p[ii,u];
if v<>m then begin
for j1 := 1 to n do begin
for i1 := 1 to p[j1,0] do if b[j1,i1]=true then begin rec(j1,i1); end;
for i1 := p[j1,0] downto 1 do if b[j1,i1]=true then begin rec(j1,i1); end;
end;
end else
if maxx<s then maxx:=s;
s:=s-p[ii,u];
b[ii,u]:=true;
dec(v);
end;


begin
readln(n,m);
setlength(p,n+1,100);
setlength(b,n+1,100);
for i := 1 to n do
for j := 1 to 100 do
b[i,j]:=true;
for i := 1 to n do begin
read(p[i,0]);
for j := 1 to p[i,0] do
read(p[i,j]);
end;
v:=0;
s:=0;
maxx:=0;
for i := 1 to n do begin
for j := 1 to p[i,0] do if b[i,j] then
begin rec(i,j); end;
for j := p[i,0] downto 1 do if b[i,j] then
begin rec(i,j); end;
end;
writeln(maxx);
end. Заранее спасибо.

  • Проголосовать: нравится
  • -20
  • Проголосовать: не нравится

»
13 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится
setlength(p,n+1,100); setlength(b,n+1,100);

...

for i := 1 to n do for j := 1 to 100 do b[i,j]:=true;

У вас массив [0..99] (100 элементов), а в for'е идёте до 100-го. Поставил массивы до 101 TL5
А у вас просто не стоит опция проверки выхода за границу массива.

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    Спасибо. Решение прошло. Не знаете почему на компьютере без ошибок запускается? (Embracadero 2010 xe2)

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +4 Проголосовать: не нравится

      В Delphi 7 можно было добавить строчку с ключами {$Q+,R+} — проверка на переполнение и выход за границу массивов соответственно.