N queen problem code in C Language
Write a program in C Language to Implement N queen problem using C Language and print the number of Solution to the problem as output.
Recursive backtracking algorithm, iterative backtracking method queens problem. Sum of subsets and Graph coloring, Hamiltonian cycle and Knapsack Problem etc.
N queen problem code
1 |
#include <br/> #include <br/> #include <br/> #include <br/> int check(int *s,int k) <br/> { <br/> for(int i=0;i<k;++i) <br=""> { <br/> if( (*(s+i)==*(s+k)) || ( abs(i-k)==abs(*(s+i)-*(s+k)) ) ) <br/> return 1; <br/> } <br/> return 0; <br/> } <br/> void display(int * s,int n) <br/> { <br/> printf("Solution\n"); <br/> for(int i=0;i<n;++i) <br=""> { <br/> printf("\t%d",i); <br/> } <br/> printf("\n"); <br/> for(i=0;i<n;++i) <br=""> { <br/> printf("%d\t",i); <br/> for(int j=0;j<n;++j) <br=""> { <br/> if(*(s+i)==j) <br/> printf("x\t"); <br/> else <br/> printf("\t"); <br/> } <br/> printf("\n"); <br/> } <br/> } <br/> void queen(int *s,int n) <br/> { <br/> int k; int count=0; <br/> while(*(s+0) <= n-1) <br/> { <br/> k=1; <br/> while(k>0) <br/> { <br/> while(*(s+k) ++(*(s+k)); <br/> if(*(s+k)<n) <br=""> { <br/> if(k==n-1) <br/> { <br/> count++; <br/> display(s,n); <br/> //if(count%3==0) <br/> getch(); <br/> ++(*(s+k)); <br/> } <br/> else <br/> k++; <br/> } <br/> else <br/> { <br/> *(s+k)=0; <br/> k--; <br/> ++*(s+k); <br/> } <br/> } <br/> } <br/> printf("\n Total no of solutions are:%d",count); <br/> } <br/> void main() <br/> { <br/> int n; <br/> clrscr(); <br/> printf("Enter the no of queens\n"); <br/> scanf("%d",&n); <br/> int *s; <br/> s=(int *)calloc(1,2*n); <br/> queen(s,n); <br/> getch(); <br/> } |
Source projectgeek.com