#include <stdio.h>
#include <math.h>
char a[10][10];
int n;
int feasible(int row,int col)
{
int i,j,tcol;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j]=='Q')
break;
}
tcol=j;
if(col==tcol || abs(row-i)==abs(col-tcol))
return 0;
}
return 1;
}
void nqueen(int row)
{
int i,j;
if(row<n)
{
for(i=0;i<n;i++)
{
if(feasible(row,i))
{
a[row][i]='Q';
nqueen(row+1);
a[row][i]='.';
}
}
}
else
{
printf("\nThe solution is:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%c\t",a[i][j]);
}
printf("\n\n");
}
}
}
int main()
{
int i,j;
printf("Enter the number of queens:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[i][j]='.';
}
}
nqueen(0);
getch();
return 0;
}
Функция доступна, чтобы проверить, может ли королева быть помещена в строку & пройденный столбец.Какая ошибка в моем коде для головоломки n queen?
Функция nqueen
дает все возможные решения проблемы. Я не получаю никакого вывода на экране. Пожалуйста помоги!
Исправьте свой отступ. Четыре пробела на строку - все, что вам нужно для форматирования текста в виде кода, у вас есть еще больше возможностей для строк, которые не должны иметь C-отступ. – unwind
n, i и j не инициализируются! – Zelldon
Что вы сделали, чтобы найти проблему? – Michas