Giúp mình fix lỗi bài Mã đi tuần này với :(( !

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi nguyen204, 3/7/09.

  1. nguyen204

    nguyen204 Mr & Ms Pac-Man Lão Làng GVN

    Tham gia ngày:
    20/5/05
    Bài viết:
    243
    Nơi ở:
    Nơi ở
    Mọi người xem giúp mình vì sao đến nước đi thứ 32 , sang nước đi thứ 33 thì nó bị lỗi vậy :((
    Mã:
    #include <stdio.h>
    #include <stdlib.h>
    
    void Create(int BanCo[12][12])
    {
    
        for(int i=0;i<12;i++)
            for(int j=0;j<12;j++)
                        if(i>=2 && i<=9 && j>=2 && j<=9)
                BanCo[i][j]=0; // Khoi tao ban co
                else
                BanCo[i][j]=-1;// Cac duong vien ben ngoai
    }
    
    void Print(int BanCo[12][12])
    {
        for(int i=0;i<12;i++)
            {
            for(int j=0;j<12;j++)
                printf("%4d",BanCo[i][j]);
                printf("\n\n");
            }
    }
    
    void Try(int buoc_di,int i,int j,int BanCo[12][12],int *I,int *J)
    {
        
        for(int l=0;l<7;l++)
        {
            if(BanCo[i+I[l]][j+J[l]]==0)
                //o chua qua , dat duoc
            {
                if(buoc_di+1 == 63)//hoan tat
                {
                       for(i=2;i<10;i++)
                        for(j=2;j<10;j++)
                            if(BanCo[i][j]==0)
                                                    BanCo[i][j]=63;
                                   Xuat(BanCo);
                                            exit(0);
                }
    			else
                {
                    i=i+I[l];
                    j=j+J[l];
                    BanCo[i][j]=buoc_di+1;
                    Try(buoc_di+1,i,j,BanCo,I,J);
                    BanCo[i][j]=0;
    	    }
            }
        }
    }
    
    void main()
    {
    	int BanCo[12][12];
    	int I[8]={-2,-1,1,2,2,1,-1,-2};
    	int J[8]={1,2,2,1,-1,-2,-2,-1};
    	Create(BanCo);
    	BanCo[2][2]=1;
    	Print(BanCo);
    	Try(1,2,2,BanCo,I,J);
    }
    Giúp mình với, mình xin cảm ơn nhiều :)
     
  2. thanhtungtnt

    thanhtungtnt The Pride of Hiigara Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    9,444
    Nơi ở:
    Balamb City
    Bạn thử dùng chức năng debug tìm lỗi chưa ? Mấy cái VC++ với VS rất mạnh về khả năng debug.
    ____________________________
     
  3. nguyen204

    nguyen204 Mr & Ms Pac-Man Lão Làng GVN

    Tham gia ngày:
    20/5/05
    Bài viết:
    243
    Nơi ở:
    Nơi ở
    Hura, mình fix đc rồi :D , cám ơn bạn nhé :D
     
  4. dhl012

    dhl012 C O N T R A

    Tham gia ngày:
    21/1/07
    Bài viết:
    1,755
    Nơi ở:
    vô tỉnh
    Giải thuật ở trên làm theo phương pháp đệ quy, tuy đơn giản nhưng chi phí thực hiện là rất tốn kém nếu bàn cờ lớn. Cỡ 10x10 bạn sẽ thấy ngay sự khác biệt.
    Còn có 1 giải thuật khác giải xin chia sẻ với bạn đó là giải thuật min-max.
    giải thuật này dựa trên ý tưởng khi 2 người chơi cờ với nhau là làm sao cho nước đi tiếp theo của đối thủ càng ít nước để đi càng tốt. Áp dụng rất tốt cho bài toán mã đi tuần.

    Giải thuật như sau:
    ở mỗi một nước đi, xét tất cả các ô cờ mà quân mã có thể đi tới. Với mỗi ô cờ đó, tính xem nếu quân mã đi đến đó thì sẽ có thể đi được tới bao nhiêu ô nữa, gọi số ô này là b. Tìm min của b và ô tương ứng, quân mã sẽ đi đến ô đó. Giải thuật lặp cho đến khi không có ô để đi.
     
  5. thanhtungtnt

    thanhtungtnt The Pride of Hiigara Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    9,444
    Nơi ở:
    Balamb City
    Giống thuật toán A* quá.
    _____________________
     
  6. dhl012

    dhl012 C O N T R A

    Tham gia ngày:
    21/1/07
    Bài viết:
    1,755
    Nơi ở:
    vô tỉnh
    đây là giải thuật mà một đường đi thẳng tới đích cậu à, A* bản chất vẫn là vét, chỉ là không triệt để thôi.
     
  7. Funnnny

    Funnnny Will Code Python For FOOD Moderator

    Tham gia ngày:
    2/8/05
    Bài viết:
    9,406
    Nơi ở:
    Hanoi, Vietnam
    Tôi được biết thì bài tháp hà nôi, con mã đi tuần và xếp hậu vẫn là 3 bài cơ bản để dạy đệ quy. Làm cách khác thì đương nhiên là được nhưng ko cần thiết
     
  8. dhl012

    dhl012 C O N T R A

    Tham gia ngày:
    21/1/07
    Bài viết:
    1,755
    Nơi ở:
    vô tỉnh
    bài mã đi tuần với 8 hậu xếp làm ví dụ cho thuật giải min-max mà. Ví dụ bên đệ quy chỉ chứng tỏ độ phức tạp của đệ quy rất lớn thôi :D.

    Các bài đệ quy cơ bản là tính tổng, giai thừa, dãy finonaci...
    mà chủ thớt xong việc rồi sao tụi mình nhiều chuyện thế nhỉ :D
     

Chia sẻ trang này