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();
}
Bài liên quan
Bài này @BatdangthucD làm gì và đang bị lỗi gì thế?
à e code lại bài con hâu …lâu rồi ko code … chả hiểu sao lỗi :))
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