Page 86 - C:\Users\Admin\Desktop\Sach mem upweb\
P. 86
100 Problems & Solutions Trang 86
Nhận xét: Lời giải dùng thuật toán quy hoạch động của Phạm Đức Thanh tốt hơn rất
nhiều so với thuật toán đệ quy quay lui.
Bài 39/2000 - Ô chữ
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S-,T-,V+,X+}
{$M 16384,0,655360}
uses crt;
const fi = 'input.txt';
fo = 'output.txt';
var A : array[1..5,1..5] of char;
new,blank : record x,y : integer end;
procedure no_no_and_no;
var f : text;
begin
assign(f,fo);
rewrite(f);
write(f,'This puzzle has no final configuration.');
close(f);
halt;
end;
procedure yes_yes_and_yes;
var f : text;
i,j : byte;
begin
assign(f,fo);
rewrite(f);
for i := 1 to 5 do
begin
for j :=1 to 5 do
write(f,a[i,j]);
writeln(f);
end;
close(f);
end;
procedure swap(px,py : integer);
var coc : char;
begin
new.x := blank.x + px;
new.y := blank.y + py;
if (new.x >5) or (new.y >5) or (new.x <1) or (new.y <1) then
no_no_and_no;
coc := A[new.x,new.y];
A[new.x,new.y] := A[blank.x,blank.y];
A[blank.x,blank.y] :=coc;
blank := new;
end;
procedure chuyen(ch : char);
begin
case ch of
'A' : swap( -1,0);
'B' : swap( 1,0);
'R' : swap( 0, 1);
Tin học & Nhà trường 100 Đề Toán - Tin học