In: Computer Science
write project Queens problems / c language
//C program
#include<stdio.h>
#include<stdbool.h>
# define n 4
bool issafe_row(int a[][n],int row,int col){
int i;
for(i=0;i<col;i++){
if(a[row][i]==1)return
false;
}
return true;
}
bool issafeupdiagonal(int a[][n],int row,int col){
while(row>0&&col>0){
if(a[row-1][col-1]==1)return
false;
row--;
col--;
}
return true;
}
bool issafedown_diagonal(int a[][n],int row,int col){
while(row<n&&col>0){
if(a[row+1][col-1]==1)return
false;
row++;
col--;
}
return true;
}
bool issafe(int a[][n],int row,int col){
return
issafe_row(a,row,col)&&issafedown_diagonal(a,row,col)&&issafeupdiagonal(a,row,col);
}
bool queen(int a[][n],int col){
if(col>=n)return true;
int i;
for(i=0;i<n;i++){
if(issafe(a,i,col)==true){
a[i][col]=1;
if(queen(a,col+1)==true)return true;
a[i][col]=0;
}
}
return false;
}
void print(int a[][n]){
int i,j;
for(i=0;i<n;i++){
for( j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
int main(){
int arr[n][n];
int i,j;
for( i=0;i<n;i++){
for(j=0;j<n;j++)
arr[i][j]=0;
}
if(queen(arr,0)==true){
print(arr);
}
}
//sample output