var
a:array[1..5,1..5,1..3] of integer;
procedure myinput;
var i,j:integer;
begin
assign(input,'tower.txt');
reset(input);
for i:=1 to 5 do
begin
for j:=1 to i do
begin
read(input,a[i,j,1]);
end;
end;
end;
procedure init;
var i,j,k:integer;
begin
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
for k:=1 to 3 do
begin
a[i,j,k]:=0;
end;
end;
end;
end;
procedure debug;
var i,j:integer;
begin
for i:=1 to 5 do
begin
for j:=1 to i do
begin
write(a[i,j,2]:5);
end;
writeln;
end;
for i:=1 to 5 do
begin
for j:=1 to i do
begin
write(a[i,j,3]:5);
end;
writeln;
end;
end;
procedure work;
var i,j:integer;
begin
for i:=5 downto 2 do
begin
for j:=1 to i-1 do
begin
if a[i,j,1]+a[i,j,2]<a[i,j+1,1]+a[i,j+1,2] then
{left<right}
begin
a[i-1,j,2]:=a[i-1,j,2]+a[i,j+1,1]+a[i,j+1,2];
a[i-1,j,3]:=1;
end
else{left>right}
begin
a[i-1,j,2]:=a[i-1,j,2]+a[i,j,1]+a[i,j,2];
a[i-1,j,3]:=0;
end;
end;
end;
end;
{main}
begin
init;
myinput;
work;
writeln(a[1,1,2]);
debug;
readln;
end.
测试数据
9
12 15
10 6 8
2 18 9 5
19 7 10 4 16