#include<iostream>
using namespace std;
struct M
{
int arr[9][9] = {0};
};
int count = 0;
void eightQueen(int row, Mar Copy)
{
if(row == 1){
for(int i = 1; i<=8; i++){
if(Copy.arr[row][i] == 3){}
else{
Copy.arr[row][i] = 1;
for(int j = 1; j<=8; j++){
for(int k = 1; k<=8; k++){
if(Copy.arr[j][k] ==3 ){
cout<<"0 ";
}
else if(Copy.arr[j][k] == 1){
cout<<"1 ";
}
else{
cout<<"0 ";
}
}
cout<<endl;
}
count++;
cout<<"------------------------------"<<endl;
}
Copy.arr[row][i] = 3;
}
}
else{
for(int i = 1; i<=8; i++){
Mar copy = Copy;
if(copy.arr[row][i] == 3){}
else if(copy.arr[row][i] == 0){
copy.arr[row][i] = 1;
int _row = row-1;
for(int j = _row; j>=1; j--){
copy.arr[j][i] = 3;
}
_row = row-1;
for(int j = i-1; j>=1; j--){
if(_row == 0){
break;
}
copy.arr[_row--][j] = 3;
}
_row = row-1;
for(int j = i+1; j<=8; j++){
if(_row == 0){
break;
}
copy.arr[_row--][j] = 3;
}
eightQueen(row-1, copy);
}
}
}
}
int main()
{
M m;
eightQueen(8, m);
cout<<count<<endl;
system("pause");
return 0;
}