n Queens
Source code:
#include<stdio.h>
#include<math.h>
int board[20];
int place(int r,int c){
int i;
for(i=1;i<=r-1;i++){
if((board[i]==c) || (abs(board[i]-c) == abs(i-r)))
return 0;
}
return 1;
}
void display(int n){
int i,j;
printf("Solution :\n");
for(i=1;i<=n;i++,printf("\n")){
for(j=1;j<=n;j++){
if(board[i] == j)
printf("Q\t");
else
printf("-\t");
}
}
}
void queen(int r,int n){
int c;
for(c=1;c<=n;c++){
if(place(r,c)){
board[r]=c;
if(r == n)
display(n);
else
queen(r+1,n);
}
}
}
int main(){
int n;
printf("Enter # of queens:\n");
scanf("%d",&n);
queen(1,n);
return 0;
}
Output:
Enter # of queens:
4
Solution :
- Q - -
- - - Q
Q - - -
- - Q -
Solution :
- - Q -
Q - - -
- - - Q
- Q - -
#include<stdio.h>
#include<math.h>
int board[20];
int place(int r,int c){
int i;
for(i=1;i<=r-1;i++){
if((board[i]==c) || (abs(board[i]-c) == abs(i-r)))
return 0;
}
return 1;
}
void display(int n){
int i,j;
printf("Solution :\n");
for(i=1;i<=n;i++,printf("\n")){
for(j=1;j<=n;j++){
if(board[i] == j)
printf("Q\t");
else
printf("-\t");
}
}
}
void queen(int r,int n){
int c;
for(c=1;c<=n;c++){
if(place(r,c)){
board[r]=c;
if(r == n)
display(n);
else
queen(r+1,n);
}
}
}
int main(){
int n;
printf("Enter # of queens:\n");
scanf("%d",&n);
queen(1,n);
return 0;
}
Output:
Enter # of queens:
4
Solution :
- Q - -
- - - Q
Q - - -
- - Q -
Solution :
- - Q -
Q - - -
- - - Q
- Q - -
Comments
Post a Comment