C Program to solve N Queens using greedy method
Program
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void queen(int, int);
void print(int);
int place(int, int);
int board[20], count;
void main()
{
int n;
printf("Enter number of Queens:\t");
scanf("%d", &n);
if( n <= 3)
{
printf("No solution found\n");
exit(0);
}
queen(1, n);
}
void print(int n)
{
int i, j;
printf("\nSolution %d:\t\n\n", ++count);
for(i = 1; i <= n; ++i)
printf("\t%d", i);
for(i = 1; i <= n; ++i)
{
printf("\n%d",i);
for(j = 1; j <= n; ++j)
{
if(board[i] == j)
printf("\tQ");
else
printf("\t*");
}
}
printf("\n");
}
int place(int row, int column)
{
int i;
for(i = 1; i <= row - 1; ++i)
{
if(board[i] == column)
return 0;
else if(abs(board[i] - column) == abs(i - row))
return 0;
}
return 1;
}
void queen(int row, int n)
{
int column;
for(column = 1; column <= n; ++column)
{
if(place(row, column))
{
board[row] = column;
if(row == n)
print(n);
else
queen(row + 1, n);
}
}
}
Output
Enter number of Queens: 3
No solution found