nqueens

 #include<stdio.h>

#include<math.h>
#include<stdlib.h>
int board[20],count;

void queen(int row,int n);

int main()
{
  int n,i,j;
  printf("N queen");
  printf("\n Enter the no. of queens:");
  scanf("%d",&n);
  queen(1,n);
}

void print(int n){
  int i,j;
  printf("\n solution %d:\n",++count);
  for(i=1;i<=n;++i)
    printf("\t%d",i);

  for(i=1;i<=n;i++){
    printf("\n\n%d",i);
    for(j=1;j<=n;++j){
      if(board[i]==j)
        printf("\tQ");
      else
        printf("\t-");
    }
  }
}

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);
    }
  }
}

Comments