Chủ đề: Giải thích giúp thủ tục
-
10-28-2010, 04:23 AM #1
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 2
Giải thích giúp thủ tục
Giải thích hoạt động của thủ tục try giúp mình, mình đọc mãi mà không hiểu nó hoạt động như thế nào. Pascal thực hiện tuần tự câu lệnh từ trên xuống.Đây là chương trình in ra các hoán vị của 1 số
Mã: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.
-
10-28-2010, 05:35 AM #2
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 3
Procedure Try(j:integer);
Var i:integer;
Begin
If j=0 then
Begin
print; {thoa man dk, in ra}
exit; {thoat ra}
End;
For i:=1 to length(S) do
If kt then
Begin
kt:=false; {danh dau de lan sau khong bi lap lai}
x[j]:=S; {gan gia tri cho ket qua}
try(j-1); {thu voi gia tri j-1}
kt:=true; {ben tren da danh dau thi gio bo danh dau vi da xet qua truong hop nay roi}
End;
End;
Quá trình:
_ j=0 -> print+exit: khi đã về tới j=0 tức là ta đã chọn được n chữ số tạo được hoán vị, lúc này sẽ thực hiện công việc in ra kết quả và thoát khỏi vòng ctc hiện thời lúc đó (tức là trở về ct đệ quy ở bước trước) và không làm những công việc bên dưới.
_ i=1->length(s), if kt: thử các giá trị có thể nhận được của x[j], giá trị nào có thể được (if kt) thì gán cho x[j], đánh dấu giá trị đó đã được chọn để các bước lặp sau không chọn lại, và sau đó thực hiện thử chọn số tại vị trí j-1 (lùi 1 vị trí) = try(j-1)
_ kt:=true: đây là gán lại giá trị cho mảng đánh dấu, sở dĩ có dòng này vì bước trên ta đã gán giá trị chọn nó rồi, thì sau khi đệ quy theo hướng đó, ta phải trả lại giá trị true cho vị trí đánh dấu đó.
-
11-01-2010, 08:02 AM #3
Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
- Mình thây sách LMH là dễ hỉu nhất r`. Mình k có khả năng sư phạm để giảng cho bạn hỉu hơn ebook đâu [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]
- Nếu k hỉu nữa thì bạn f7, xem các biến chạy ntn thì sẽ hỉu thôi
Để đáp ứng nhu cầu ngày càng đa dạng của khách hàng trong các lĩnh vực chuyên biệt, 3D Thinking đang tập trung phát triển các trung tâm dịch vụ chuyên sâu theo ngành. Mỗi trung tâm sẽ phụ trách...
Đưa công nghệ quét 3D vào lĩnh vực mỹ thuật và tạo hình