Hiển thị kết quả từ 1 đến 3 / 3
  1. #1
    Tham gia
    23-06-2009
    Location
    Huyện Gia Bình - Tỉnh Bắc Ninh
    Bài viết
    323
    Like
    0
    Thanked 4 Times in 4 Posts

    Rất cần giúp đỡ

    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.
    Quote Quote

  2. #2
    Tham gia
    13-01-2010
    Bài viết
    78
    Like
    0
    Thanked 0 Times in 0 Posts
    quan trọng là cái thủ tục đệ quy quay lui try đó bạn.
    Ta có mảng S chứa các giá trị có trong hoán vị. kt[j] mảng đánh dấu xem giá trị s[j] đã có trong hoán vị đang tạo chưa. Còn nếu muốn rõ quy luật của nó thì bạn vào trong chương trình rồi chọn Debug->what.
    ấn Ctrl+F7 để đưa các biến có trong chương trình vào. ấn F7 để chạy chi tiết từng câu lệnh.

  3. #3
    Tham gia
    23-06-2009
    Location
    Huyện Gia Bình - Tỉnh Bắc Ninh
    Bài viết
    323
    Like
    0
    Thanked 4 Times in 4 Posts
    Cám ơn bạn đã chỉ cho mình cách xem hoạt động từng bước của các biến.
    Nhưng quan trọng cái thủ tục try kia thì mình vẫn chưa hiểu.

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •