Bài này dễ mà?
Bạn học đệ quy chưa? Nếu rồi thì suy nghĩ tí là ra ngay, còn chưa thì....
Code:
{ n: length(st)
M[]: mảng để đưa các st[i] vào
K[i]: true nếu st[i] đã có trong M[] (đã dùng) và ngc lại}
procedure try(i)
var
byte: j;
begin
for j:=1 to n do
if not K[i] then {xét st[i] đã đc dùng chưa}
begin
M[j]:=st[j];
K[j]:=true; {st[j] đã đc dùng}
if i=n then Xuat mang M[]
else try(i+1);
K[j]:=false; {st[j] đã dùng xong nên đổi giá trị lại} // Hihi gỏ nhầm là TRUE, mình mới chỉnh lại
end
end;
Cách dùng: gọi Tr(1)