TD.pas123456
2 posters
Trang 1 trong tổng số 1 trang
TD.pas123456
program bt;
const fi = 'TD.inp';
fo = 'TD.out';
type luu= array[0..1000,0..1000]of longint;
mang = array[1..1000]of longint;
var s,n,m,imin:longint;
a:luu;
trace:mang;
procedure Nhap;
var f:text;
i,j:longint;
begin
assign(f,fi);
reset(f);
readln(f,n,m);
for i:=1 to n do
for j:=1 to m do
read(f,a[i,j]);
close(f);
end;
function min(x,y,z:longint):longint;
begin
if (x if (y if (z exit(x);
end;
procedure Xuli;
var i,j,t:longint;
begin
for i:=1 to m do
begin
a[0,i]:=maxlongint;
a[n+1,i]:=maxlongint;
end;
s:=maxlongint;
for i:=1 to n do
if s>a[i,1] then begin s:=a[i,1]; imin:=i; trace[1]:=i end;
for j:=1 to m-1 do
begin
s:=s+min(a[imin-1,j+1],a[imin,j+1],a[imin+1,j+1]);
trace[j+1]:=imin;
end;
end;
procedure Xuat;
var f:text;
i:longint;
begin
assign(f,fo);
rewrite(f);
writeln(f,s);
for i:=1 to m do
write(f,trace[i],' ');
close(f);
end;
begin
Nhap;
Xuli;
Xuat;
End.
const fi = 'TD.inp';
fo = 'TD.out';
type luu= array[0..1000,0..1000]of longint;
mang = array[1..1000]of longint;
var s,n,m,imin:longint;
a:luu;
trace:mang;
procedure Nhap;
var f:text;
i,j:longint;
begin
assign(f,fi);
reset(f);
readln(f,n,m);
for i:=1 to n do
for j:=1 to m do
read(f,a[i,j]);
close(f);
end;
function min(x,y,z:longint):longint;
begin
if (x
end;
procedure Xuli;
var i,j,t:longint;
begin
for i:=1 to m do
begin
a[0,i]:=maxlongint;
a[n+1,i]:=maxlongint;
end;
s:=maxlongint;
for i:=1 to n do
if s>a[i,1] then begin s:=a[i,1]; imin:=i; trace[1]:=i end;
for j:=1 to m-1 do
begin
s:=s+min(a[imin-1,j+1],a[imin,j+1],a[imin+1,j+1]);
trace[j+1]:=imin;
end;
end;
procedure Xuat;
var f:text;
i:longint;
begin
assign(f,fo);
rewrite(f);
writeln(f,s);
for i:=1 to m do
write(f,trace[i],' ');
close(f);
end;
begin
Nhap;
Xuli;
Xuat;
End.
free_pascal- Mouse
- Tổng số bài gửi : 18
Join date : 09/10/2011
Age : 27
Đến từ : USIT
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|