01/10/2018, 16:20
Lỗi code C không nhảy vào lệnh gán
#include <stdio.h>
#include <stdlib.h>
#define true 1
#define false 0
void xuat(int a[], int n)
{
int i;
for(i=0;i<n;i++)
{
printf("a[%d] = %d ",i,a[i]);
}
printf("
");
}
void queen(int a[], int n, int row)
{
int r,c;
_Bool check = false;
if(row ==n)
{
xuat(a,n);
exit(0);
}
else{
for(c=0;c<n;c++)
{
check = true;
for(r =0;r<row;r++)
{
if(a[r] == c ||
a[r]==(c+row-r) ||
a[r]==(c-row+r) )
{
check = false;
}
}
if(check)
{
a[row] == c;
queen(a,n,row+1);
}
}
}
}
int main()
{
int a[4];
int i;
queen(a,4,0);
return 0;
}
Code trên là bài Con Hậu, mình dùng quay lui. Nhưng dị cái là lần đầu làm thì code ra, xóa đi làm lại thì nó chạy sai, debug thấy nó không chạy vào hàm gán a[row] = c
trong đoạn :
if(check) { a[row] == c; queen(a,n,row+1); }.
Có cao nhân nào biết chuyện gì xảy ra với dòng code đó chỉ mình với. Thanks .
Bài liên quan
lệnh a[row] == c; đơn thuần chỉ là một lệnh gán phần thử thứ row của mảng a = c chứ không phải hàm, nhưng ở đây cú pháp lệnh gán của bạn sai; không phải a[row] == c; (so sánh a[row] với c) mà phải là a[row] = c;