Code:
const
spt = 101;
fi = 'f.i';
fo = 'f.o';
var
n: byte;
a, b: array[0..spt,0..spt] of integer;
c: array[0..spt,0..spt] of 0..1;
procedure Input;
var
f: text;
i, j: byte;
begin
assign(f, fi);
reset(f);
readln(f,n);
for i := 1 to n do
begin
for j := 1 to n do
read(f,a[i,j]);
readln(f);
end;
close(f);
end;
procedure Process;
var
i,j: byte;
begin
for i := 1 to n do
for j := 1 to n do
begin
b[i,j] := 0;
c[i,j] := 0;
end;
b[1,1] := a[1,1];
for i := 2 to n do
begin
b[1,i] := b[1,i-1] + a[1,i];
b[i,1] := b[i-1,1] + a[i,1];
end;
for i := 2 to n do
for j := 2 to n do
if b[i-1,j] > b[i,j-1] then b[i,j] := b[i-1,j] + a[i,j]
else b[i,j] := b[i,j-1] + a[i,j];
c[n,n] := 1;
for i := n downto 1 do
for j := n downto 1 do
if c[i,j] = 1 then
if b[i-1,j] > b[i,j-1] then
c[i-1,j] := 1
else c[i,j-1] := 1;
end;
procedure Result;
var
f: text;
i, j: byte;
begin
assign(f, fo);
rewrite(f);
writeln(f, b[n,n]);
for i := 1 to n do
for j := 1 to n do
if c[i, j] = 1 then
writeln(f, i, ' ', j);
close(f);
end;
begin
Input;
Process;
Result;
end.
có chỗ nào chưa đúg, không hiểu hay chưa hay thì bạn cứ góp ý nhák
Bookmarks