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 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    BT con mã đi tuần. Xem giúp code của mình

    Đây là code mình viết nhưng nó ko hiện ra kết quả, mình đã dò nhưng ko biết thuật toán sai ở đâu.
    Mọi người xem giúp mình với.

    Mã:
    #include <stdio.h>
    #include <conio.h>
    
    int row[100], col[100], C[100][100], n;
    int dx[]={2,1,-1,-2,2,1,-1,-2},
    	dy[]={1,2,2,1,-1,-2,-2,-1};
    
    void inkq(int a[], int b[], int n)
    {
    	int i;
    	for(i=0;i<n;i++)
    	{
    		printf(" (%d,%d) ",a[i],b[i]);
    	}
    }
    
    int Try(int step,int a, int b)
    {
    	int j;
    	for(j=0;j<8;j++)
    	{
    		if (C[a+dx[j]][b+dy[j]] && a+dx[j]>=0 && a+dx[j]<n && b+dy[j]>=0 && b+dy[j]<n)
    		{
    			row[step]=a+dx[j];
    			col[step]=b+dy[j];
    			C[row[step]][col[step]]=0;
    			if (step==n*n-1) 
    			{
    				inkq(row,col,n);
    				return 0;
    			}
    			else 
    			{
    				Try(step+1,row[step],col[step]);
    				C[row[step]][col[step]]=1;
    			}
    		}
    	}
    }
    
    int main()
    {
    	int i,j;
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	for(j=0;j<n;j++)
    	C[i][j]=1;
    	C[0][0]=0;
    	Try(0,0,0);
    	
    	getch();
    	return 0;
    }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    - mình thêm 2 dòng sau vào đầu hàm try của bạn :
    Mã:
    	cout<<"try "<<step<<" ("<<a<<","<<b<<")"<<endl;
    	getch();
    thì thấy kết quả in ra mỗi bước đều đúng, kiểm tra code cũng không thấy sai đâu cả. Còn về việc bạn không thấy in ra kết quả là vì số lời giải cần duyệt quá lớn nên máy chưa tính ra được, có lẽ đợi vài ngày mới chạy xong [IMG]images/smilies/biggrin.png[/IMG] . Rất đơn giản thế này, mỗi một nước con mã có tối đa 8 nước có thể đi và tối thiểu 2 nước => với bàn cờ cỡ 8x8 thì bạn phải đi 63 nước, mỗi nước lại có bằng ấy khả năng ... => số lượng tính toán vô cùng lớn.

    - còn 1 khả năng là với n bạn chọn căn bản không có lời giải hợp lý nên đương nhiên nó không in ra, ví dụ là bàn cờ 5x5,7x7,3x3 không có lời giải, 6x6 thì mình ko biết, còn 8x8 thì có 2 lời giải. Bạn có thể cải tiến với bàn cờ không phải vuông mà là hình chữ nhật xem sao, với loại này thì bàn cờ 3x4 có lời giải và kích cỡ nhỏ nên bạn dễ dàng kiểm chứng được
    - tham khảo http://vi.wikipedia.org/wiki/B%C3%A0i_to%C3%A1n_m%C3%A3_%C4%91i_tu%E1%BA%A7n

  3. #3
    Ngày tham gia
    Sep 2015
    Đang ở
    hà nội
    Bài viết
    0
    Cảm ơn bạn nhiều nhé [IMG]images/smilies/smile.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
  •