M
QHĐ là cái procedure xuly ấy, bạn xem cái procedure dùm mình. Xem có sai hok. Mình mới học QHĐ thôi, chưa rành lắm. Hix, cái đệ quy mình còn lơ tơ mơ nữa làCơ sở QHĐ đâu.....................................Chú ý cái cơ sở QHĐ kẻo sai
Ở đây có trò gì vui lắm à :Mjogging::Mjogging::Mjogging::Mjogging:
Mình có bài này:
Bài toán con kiến
Trên một sân hình chữ nhật mxn, được chia thành các ô vuông đơn vị, mỗi ô chứa một lượng thức ăn. Một con kiến xuất phát từ ô (1,1) muốn đi qua sân đến dòng thứ m để lấy thức ăn trong ô.
Con kiến chỉ có thể đi mỗi lần một ô (hoặc ngang, hoặc xuống). Hãy chỉ ra đường đi để con kiến có được lượng thức ăn nhiều nhất.
Bài này là QHĐ mảng 2 chiều ấy. Bạn nào up code lên dùm mình
Thanks nhìu
uses crt;
var a,b:array[0..100,0..100] of integer;
c:array[0..100,0..100] of boolean;
n,i,j:integer;
f1,f2:text;
function max(b,a:integer):integer;
begin
if a<=b then max:=b else max:=a;
end;
procedure QHD;
var i,j:integer;
begin
fillchar(b,sizeof(b),0);
for i:=1 to n do
begin
b[1,i]:=a[1,i]+b[1,i-1];
b[i,1]:=a[i,1]+b[i-1,1];
end;
for i:=2 to n do
for j:=2 to n do
b[i,j]:=max(b[i-1,j],b[i,j-1])+a[i,j];
writeln(f2,b[n,n]);
end;
procedure truyvet;
var i,j:integer;
begin
fillchar(c,sizeof(c),true);
i:=n;
j:=n;
c[n,n]:=false;
repeat
if (j>1) and (b[i,j-1]=max(b[i-1,j],b[i,j-1])) then
begin
dec(j);
c[i,j]:=false;
end;
if (i>1) and (b[i-1,j]=max(b[i-1,j],b[i,j-1])) then
begin
dec(i);
c[i,j]:=false;
end;
until (i=1) and (j=1);
for i:=1 to n do
for j:=1 to n do
if c[i,j]=false then write(f2,'(',i,',',j,') ');
writeln(f2);
writeln(f2,'*********');
end;
begin
assign(f1,'BAI2.INP');
reset(f1);
assign(f2,'BAI2.OUT');
rewrite(f2);
while not eof(f1) do
begin
readln(f1,n);
for i:=1 to n do
begin
for j:=1 to n do
read(f1,a[i,j]);
readln(f1);
end;
readln(f1);
QHD;
truyvet;
end;
close(f2);
close(f1);
end.
Anh làm thuật j` thế, a post thuật toán lên đi chứ để thế này e đọc ko hiểu :-S )
Mod đi Spam thế ah bạn, đề nghị bác cương xóa cả 2 cmt này đi
Ah e hỏi a chút
Cái thuật của e dùng cơ sở là
F[1,j]:=W với j chạy từ 1->m.
F[i,j]:=F[i-1,j]+W với i chạy từ 2->n
Nhưng để chắc e nghĩ nên tạo viền cho bảng phương án đề tránh lỗi ra ngoài mảng.Khởi tạo viền với 1 giá trị đặc biệt sẽ tối ưu hơn.
Tuy nhiên đây cũng chỉ là 1 cách cho chắc chắn, có thể lược bỏ. Anh thấy thế nào :-/
P/s: Vote +1 đi a )
for i:=1 to n do
begin
b[1,i]:=a[1,i]+b[1,i-1];
b[i,1]:=a[i,1]+b[i-1,1];
end;
Bây giờ có a starlove_maknae_kyuhyun, và cuong276.
Mà sao ko thấy bác trong mục Mod của box thế :-?
Bây giờ ở chỗ mình ko thấy thi olympic, toàn thi THT :-?Toàn lính mới à mình do từ hồi đi thi olympic toàn miền Nam về ít lên nên không ai nhớ
Bây giờ ở chỗ mình ko thấy thi olympic, toàn thi THT :-?
Mình ở MB =)). Năm nay thi THT lần đầu ko ngờ đc thi toàn quốc luôn ). Thế thi được giải cao koOlympic toàn miền Nam năm nào mà chả tổ chức năm nay mình mới đi thi về mà
Mình ở MB =)). Năm nay thi THT lần đầu ko ngờ đc thi toàn quốc luôn ). Thế thi được giải cao ko
Bạn thiếu cơ sở QHĐ.
F[1,j]:=W với j chạy từ 1->m.
F[i,j]:=F[i-1,j]+W với i chạy từ 2->n