Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 6 của 6
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    tìm kết quả của chương trình C?

    Mọi người giúp mình tìm KQ bước 2 của chương trình sẽ xuất ra với. Kq bước 1 mình cbiên dịch đc là 1 2 3 4. Mình ko hiểu sau khi bước 1 hoàn tất thì máy sẽ biên dịch để tìm kết quả bước 2 như thế nào?
    P/s: Đã chạy thử ctr trên máy thì ra bước 2 là: 1 2 4 3. Nhưng ko hiểu sao lại ra đc kq này?

    Mã:
    #include<stdio.h>
    #include<conio.h>
    int X[10], chuaxet[10], n, count;
    void Init(void)
    {     n=4; count=0;
           for(int i=1; i<=n; i++)
                 chuaxet[i]=1;
    }
    void Result(void)
    { 
    printf("
     Ket qua buoc %d :",++count);
     for (int i=1; i<=n; i++)
                                printf("%3d", X[i]);
    }
    void Try(int i)
    {      for(int j=1; j<=n; j++)
            {if (chuaxet[j])
    	    { X[i]=j; chuaxet[j]=0;
    	       if (i==n)Result();
    	       else Try(i+1);
    	       chuaxet[j]=1;}
    	    }
    }
    void main(void){
    	                   Init(); Try(1);}

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    BackTracking thì tự chạy tay thôi bạn.
    vẽ cái cây ra, tùy bạn làm sao cho nó dễ hiểu
    BackTrack sài Debug cũng khó kiểm soát
    Nhưng bạn cứ Debug đi, sẽ nhìn thấy thôi.
    Mấy loại này phải tự tay làm thôi bạn ạ.
    Vì nó khó [IMG]images/smilies/biggrin.png[/IMG] do vậy nếu để người khác làm thì mình ko hiểu đc nhiều đâu [IMG]images/smilies/biggrin.png[/IMG]

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Hì, bài này là sinh ra các hoán vị thôi, ở mỗi lần sinh kiểm tra xem nó đã được sử dụng chưa.
    Với n=4 thì sẽ sinh hoán vị trong {1,2,3,4}
    Đầu tiên Try(1) đc gọi chọn đc X[1]=1, đánh dấu đã xét
    vì 1!=4 nên gọi đến Try(2) chọn đc X[2]=2, đánh đầu
    .....
    đến 4==4 thì OK đã gọi xong Try(4), chọn đc X[4]=4 -> kết thúc Try(4) nhảy đến chuaxet[j]=1;
    Tức là số 4 chưa xét, đến dây chính là của Try(3) chưa xử xong, lúc này chọn ngay con 4, lại nhảy đến Try(4) lúc này còn mỗi em 3 chưa chọn, selec nó luôn
    [IMG]images/smilies/biggrin.png[/IMG]
    Nên ở bước 2 là: 1 2 4 3

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi hienclubvn
    Tức là số 4 chưa xét, đến dây chính là của Try(3) chưa xử xong, lúc này chọn ngay con 4, lại nhảy đến Try(4) lúc này còn mỗi em 3 chưa chọn, selec nó luôn
    [IMG]images/smilies/biggrin.png[/IMG]
    Nên ở bước 2 là: 1 2 4 3
    Thanks bác nhưng vẫn chưa hiểu lắm chỗ này.\[IMG]images/smilies/dont_know.gif[/IMG] . Bác nói rõ hơn nữa đc ko
    [IMG]images/smilies/biggrin.png[/IMG]

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Hì, đã nói rùi mà
    Mấy cái này mà nhờ người khác bảo thì khó đấy
    Bạn vẽ cây nhị phân ra, biểu diễn sự chạy đệ quy của nó
    với n=4 ko khó lắm để kiểm soát đâu [IMG]images/smilies/biggrin.png[/IMG]

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cảm ơn bạn nhiệt tình giúp đỡ, mình làm được rồi. Thấy cách vẽ cây nhị phân ra rất dễ hiểu [IMG]images/smilies/biggrin.png[/IMG]

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • 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
  •