30/09/2018, 16:27

Tìm mãi mà ko dc lỗi trong bài con Hậu

các bạn kiêm tra hộ mình xem mình sai ở đâu nhỉ :)) tìm mãi mà ko dc lỗi … code ngắn nên giúp mình với tks :))

#include <conio.h>
#include <stdio.h>
#include <math.h>
#define For(i, a, b) for(int i = a; i < b; i++)
int kq[5];
int cot[5];// tu cot 1 den cot 4
int cheochinh[9];// tu 2->8
int cheophu[4];// tu 0->3
void in()
{
	printf("
");
	For(i, 1, 5) printf("%d",kq[i]);
}
void quay_lui(int j)
{
	For(i, 1, 5) 
	{
		if(cot[i] == 1 && cheochinh[i+j] == 1 && cheophu[abs(i-j)] == 1)
		{
			kq[j] = i;
			cot[i] = 0;
			cheochinh[i+j] = 0;
			cheophu[abs(i-j)] = 0;
			if(j == 4) in();
			else quay_lui(j+1);
			cot[i] = 1;
			cheochinh[i+j] = 1;
			cheophu[abs(i-j)] = 1;
		}
	}
}
main()
{
	For(i, 1, 5) cot[i] = 1;
	For(i, 2, 9) cheochinh[i] = 1;
	For(i, 0, 4) cheophu[i] = 1;
	quay_lui(1);
	getch();
}
Nguyễn Minh Dũng viết 18:42 ngày 30/09/2018

Bài này @BatdangthucD làm gì và đang bị lỗi gì thế?

Trần Trí Dũng viết 18:41 ngày 30/09/2018

à e code lại bài con hâu …lâu rồi ko code … chả hiểu sao lỗi :))

Gió viết 18:33 ngày 30/09/2018

Có lẽ là lỗi thuật toán. Bạn bỏ abs trong chéo phụ đi, và cộng thêm 1 hằng số để chỉ số luôn không âm( 4 chẳng hạn).
Vì khi đặt là abs: thì con ở ô (1,2) sẽ khống chế ở cả 2 đường chéo phụ (x-y =±1) nên có lẽ không ra kq nào

Bài liên quan
0