Trang 3 trên tổng số 5 Đầu tiênĐầu tiên 12345 Cuối cùngCuối cùng
Từ 21 tới 30 trên tổng số 43 kết quả

Đề tài: Bài toán Tháp Hà Nội | Tower of Hanoi

  1. #21
    Ngày gia nhập
    03 2010
    Bài viết
    2

    Mặc định Code không đệ qui

    C++ Code:
    1. #include<iostream.h>
    2. int stack1[1000], stack2[1000], stack3[1000], stack0[1000];
    3. void chuyendia(int a,int b,int c,int n,int &sp)
    4. {       sp++;
    5.     stack0[sp]=n-1;stack1[sp]=c;stack2[sp]=b;stack3[sp]=a;
    6.     sp++;
    7.     stack0[sp]=1;stack1[sp]=a;stack2[sp]=b;stack3[sp]=c;
    8.     sp++;
    9.     stack0[sp]=n-1;stack1[sp]=a;stack2[sp]=c;stack3[sp]=b;
    10. }
    11. void thaphanoi(int a,int b, int c, int n)
    12. {       stack0[0]=n;stack1[0]=a;stack2[0]=b;stack3[0]=c;    
    13.     int sp=0;
    14.     while (sp>=0)
    15.     {       sp--;
    16.         if (stack0[sp+1]==1) printf("%c -> %c\t",stack1[sp+1],stack2[sp+1]);
    17.                 else
    18.         chuyendia(stack1[sp+1],stack2[sp+1],stack3[sp+1],stack0[sp+1],sp);
    19.     }
    20. }

  2. #22
    Ngày gia nhập
    11 2011
    Bài viết
    1

    với số cột n =4 thì bài toán tháp này sẽ như thế nào? có bạn nào đã làm chưa? cho mình xin code với được không.

  3. #23
    Ngày gia nhập
    11 2011
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi RaitoYagamy Xem bài viết
    mình gà có 1 vấn đề chưa hiểu lắm.Mọi người có thể cho mình biết cái n-1 và 1 có ý nghĩa gì ko.Nó đại diện cho cái gì trong bài toán
    thế bạn có hiểu gì về cái bài toán này không thế? tìm hiểu lại đề bài đi,bạn sẽ hiểu được là nó có ý nghĩa gì. chúc bạn thành công!

  4. #24
    Ngày gia nhập
    02 2012
    Bài viết
    3

    không hiểu sao mình ko thể chạy được code này,mình dùng cfree

  5. #25
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Trích dẫn Nguyên bản được gửi bởi binhbk230 Xem bài viết
    không hiểu sao mình ko thể chạy được code này,mình dùng cfree
    Trong đây có rất nhiều code. Nếu đang nói đến code ở đầu trang này thì đương nhiên là nó không chạy được bởi vì nói chung thì trong C/C++ không có file header iostream.h.

  6. #26
    Ngày gia nhập
    03 2012
    Nơi ở
    Voz forum
    Bài viết
    28

    Mặc định Bài toán Tháp Hà Nội | Tower of Hanoi

    Trích dẫn Nguyên bản được gửi bởi binhbk230 Xem bài viết
    không hiểu sao mình ko thể chạy được code này,mình dùng cfree
    bạn này cùng trường mình mà....cùng khóa mình học nữa đây mà...
    bạn lấy thử code này nhé...
    Code:
    #include<iostream>
    using namespace std;
    const int dia=64;//bạn sửa cho so bé lại nhé...hehe
    void move(int sodia,int batdau,int ketthuc,int trunggian){
        
        if(sodia>0){
            move(sodia-1,batdau,trunggian,ketthuc);
            cout<<"Di chuyen dia "<<sodia<<" tu cot "<<batdau<<" sang cot "<<ketthuc<<"."<<endl;
            move(sodia-1,trunggian,ketthuc,batdau);
        }
    }
    int main(){
        move(dia,1,3,2);
        return 0;
    }
    Trích dẫn Nguyên bản được gửi bởi donvuon Xem bài viết
    Tính được mà bạn. Gọi T(n) là số phép dịch chuyển n cái đĩa, khi đó Công thức toán học Latex
    vậy là với 64 đĩa chúng ta có độ phức tạp là 2^64-1.amen...

  7. #27
    Ngày gia nhập
    03 2012
    Bài viết
    5

    Em thử với số đĩa lớn và vắt chân ngồi đợi )

  8. #28
    Ngày gia nhập
    03 2012
    Nơi ở
    Voz forum
    Bài viết
    28

    Trích dẫn Nguyên bản được gửi bởi vincent_dk Xem bài viết
    Em thử với số đĩa lớn và vắt chân ngồi đợi )
    bạn thử tính 2^64-1 được bao nhiêu?đem chia cho 86400 xem sao?giả sử mỗi giây xếp 1 lần...hehe
    hình như sỗ đĩa >50 đã không ra kq rồi thì phải...

  9. #29
    Ngày gia nhập
    07 2012
    Bài viết
    1

    Các bạn nào có thể giải thích giúp mình các biến trong hàm chuyen_thap_chan và chuyen_dia được không. Mình đang rất cần để tuần sau nộp bài. Thanks all!
    Code:
    /*CHUONG TRINH THAP HA NOI KHONG DE QUI*/
    
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    #include<dos.h>
    
    void chuyen_thap_le(int a[],int b[],int c[],int l,int n);
    void chuyen_thap_chan(int a[],int b[],int c[],int l,int n);
    int chuyen_dia(int *a,int *b,int m1,int m2,int &xa,int &xb,int k1,int k2,int &h,char t);
    void ve_hinh(int a[],int n);
    
    void ve_hinh(int a[],int n)
     {gotoxy(39,22);printf("___");
      gotoxy(49,22);printf("___");
      gotoxy(59,22);printf("___");
      gotoxy(40,23);printf("A");
      gotoxy(50,23);printf("B");
      gotoxy(60,23);printf("C");
      for(int i=0;i<n;i++)
       {gotoxy(40,22-n+i);printf("%d",a[i]);
       }
     }
    
    void chuyen_thap_le(int a[],int b[],int c[],int l,int n)
      {int k1=1,k2=1,h=1,xa=n+1,xb=1,xc=1,a1=40,b1=50,c1=60;
       for(int i=1;i<=l;i++)
        {if(i%2)
         { if(k1==1) k1=chuyen_dia(a,c,a1,c1,xa,xc,k1,k2,h,'C');
    	else if(k1==2) k1=chuyen_dia(c,b,c1,b1,xc,xb,k1,k2,h,'B');
    	 else k1=chuyen_dia(b,a,b1,a1,xb,xa,k1,k2,h,'A');}
          else
           {if(k2==1)
    	 { if(*a<*b)k2=chuyen_dia(a,b,a1,b1,xa,xb,k1,k2,h,'B');
    	     else k2=chuyen_dia(b,a,b1,a1,xb,xa,k1,k2,h,'A');}
    	 else if(k2==2)
    	      { if(*a<*c) k2=chuyen_dia(a,c,a1,c1,xa,xc,k1,k2,h,'C');
    		  else k2=chuyen_dia(c,a,c1,a1,xc,xa,k1,k2,h,'A'); }
    	  else
    	   { if(*b<*c)k2=chuyen_dia(b,c,b1,c1,xb,xc,k1,k2,h,'C');
    	      else k2=chuyen_dia(c,b,c1,b1,xc,xb,k1,k2,h,'B');}
    
           }
        }
      }
    
    int  chuyen_dia(int *a,int *b,int m1,int m2,int &xa,int &xb,int k1,int k2,int &h,char t)
      {int c;
       delay(2000);
        gotoxy(10,24);clreol();
        printf("chuyen dia %d den %c",a[0],t);
        c=a[0];
         for(int j=0;j<xa-1;j++)a[j]=a[j+1];
         xa--;
         gotoxy(m1,22-xa);printf("  ");
       for(int k=xb;k>0;k--)b[k]=b[k-1];
         b[0]=c;
         gotoxy(m2,22-xb);printf("%d",c);xb++;
          if(h==1)
    	{k1++;h=0;
    	if(k1==4)k1=1;
    	}
          else
    	{ k2++;h=1;
    	 if(k2==4)k2=1;
    	}
         return ((h==0)?k1:k2);
     }
    
    void chuyen_thap_chan(int a[],int b[],int c[],int l,int n)
      {int k1=1,k2=1,h=1,xa=n+1,xb=1,xc=1,a1=40,b1=50,c1=60;
       for(int i=1;i<=l;i++)
        {if(i%2)
         { if(k1==1) k1=chuyen_dia(a,b,a1,b1,xa,xb,k1,k2,h,'B');
    	else if(k1==2) k1=chuyen_dia(b,c,b1,c1,xb,xc,k1,k2,h,'C');
    	 else k1=chuyen_dia(c,a,c1,a1,xc,xa,k1,k2,h,'A');}
          else
           {if(k2==1)
    	 { if(*a<*c)k2=chuyen_dia(a,c,a1,c1,xa,xc,k1,k2,h,'C');
    	     else k2=chuyen_dia(c,a,c1,a1,xc,xa,k1,k2,h,'A');}
    	 else if(k2==2)
    	      { if(*a<*b) k2=chuyen_dia(a,b,a1,b1,xa,xb,k1,k2,h,'B');
    		  else k2=chuyen_dia(b,a,b1,a1,xb,xa,k1,k2,h,'A'); }
    	  else
    	   { if(*b<*c)k2=chuyen_dia(b,c,b1,c1,xb,xc,k1,k2,h,'C');
    	      else k2=chuyen_dia(c,b,c1,b1,xc,xb,k1,k2,h,'B');}
    
           }
        }
      }
    
    void main()
      {int a[30],b[30],c[30];
       int n,l;
       clrscr();
       printf("\ncho so dia can chuyen:");scanf("%d",&n);
       for(int i=0;i<n+1;i++)a[i]=i+1;b[0]=c[0]=a[n];
        l=pow(2,n)-1;
       ve_hinh(a,n);
       if(n%2)chuyen_thap_le(a,b,c,l,n);
        else chuyen_thap_chan(a,c,b,l,n);
       getch();
      }
    Đã được chỉnh sửa lần cuối bởi v_H__t : 04-01-2013 lúc 02:02 PM.

  10. #30
    Ngày gia nhập
    05 2011
    Bài viết
    1

    Trích dẫn Nguyên bản được gửi bởi goalball1 Xem bài viết
    em cũng xin góp 1 bài...cho thêm phần sinh động...
    C++ Code:
    1. #include<conio.h>
    2. #include<iostream.h>
    3. #include<process.h>
    4. void hn(int n,char a,char b,char c)
    5. {
    6.   if(n==1)
    7.     {
    8.     cout<<"\nchuyen 1 dia tu "<<a<<" sang "<<c;
    9.     cout<<"\n";
    10.     }
    11.   else
    12.      {
    13.        hn(n-1,a,c,b);
    14.        hn(1,a,b,c);
    15.        hn(n-1,b,a,c);
    16.      }
    17. }
    18. void main()
    19. {
    20.    int n;
    21.    clrscr();
    22.    cout<<"nhap vao so dia:";
    23.    cin>>n;
    24.    hn(n,'A','B','C');
    25.    getch();
    26. }
    mình muốn đếm số lần dịch chuyển thì phải làm thế nào .các bạn giúp mình với

Các đề tài tương tự

  1. Cho thuê Căn hộ 3pn,1000 USD, đủ đồ, Chung cư Keangnam HaNoi landmark Tower
    Gửi bởi kyucmotthoi999 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 22-11-2013, 10:45 AM
  2. Bán suất ngoại giao chung cư Indochina Plaza Hanoi Tower ( IPH )
    Gửi bởi hienviboss trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 23-07-2012, 03:52 PM

Quyền hạn của bạn

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