Các bạn hãy giải thích, mô phỏng giúp mình thủ tục Try cho bài toán in ra các hoán vị của 1 số. Mình nghiên cứu mãi mà không hiểu nó hoạt động thế nào. Chạy chương trình thì nó đúng, chuẩn rồi.
Đề bài. Nhập vào 1 số, đưa ra màn hình các hoán vị của nó.
Code:
Var S,X:string;
i:integer;
kt:array[1..100] of boolean;
procedure Inp;
Begin
Readln(S);
x:=S;
fillchar(kt,sizeof(kt),true);
End;
Procedure print;
Begin
If x<>S then writeln(x);
End;
Procedure Try(j:integer);
Var i:integer;
Begin
If j=0 then
Begin
print;
exit;
End;
For i:=1 to length(S) do
If kt[i] then
Begin
kt[i]:=false;
x[j]:=S[i];
try(j-1);
kt[i]:=true;
End;
End;
Begin
inp;
try(length(S));
Readln
End.
Bookmarks