Sunday, 6 April 2014

N queen problem

#include<stdio.h>
int attck(int, int [], int);
main()
{
    int n;
    printf("enter the n value\n");
    scanf("%d",&n);
    nqn(n);
    }
void nqn(int n)
{
int a[20];
auxnqn(a,0,n);
}
void auxnqn(int a[],int d,int n)
{
 if(d==n){
print(a,n);
 return ;
 }
 for(int i=0;i<n;i++)
 {
  if(attack(i,a,d))
   continue;
 a[d]=i;
 auxnqn(a,d+1,n);
 }
}
void print(int a[],int n)
{
int i;
printf("( ");
for(i=0;i<n;++i)
printf(" %d ",a[i]);
printf(")\n");
}
int attack(int d,int a[],int n)
{
for(int i=0;i<n;++i)
{
if(a[i]==d || abs(a[i]-d)==abs(n-i))
return 1;
}
return 0;
}

No comments:

Post a Comment