//Author: Ali Akbari
#include
using namespace std;
int chess[8][8];
bool put(int move);
bool check(int,int);
int main()
{
    int i,j;
    printf("The Chess Befor Inserting Minister In It:\n");
    for(i=0;i<8;++i)
    {
        for(j=0;j<8;j++)
            printf("%6d ",chess[i][j]);
        printf("\n");
    }

    put(0);
    printf("The Chess After Inserting 8 Minister In It:\n");
    for(i=0;i<8;++i)
    {
        for(j=0;j<8;j++)
            printf("%6d ",chess[i][j]);
        printf("\n\n");
    }
    return 0;
}
bool put(int move)
{
    if(move>=8)
        return true;
    int i;
    for(i=0;i<8;i++)
        if(check(move,i))
        {
            chess[move][i]=1;
            if( put(move+1))
                return true;
            else
                chess[move][i]=0;
        }
        return false;
}
bool check(int row,int col)
{
    int i,j;
    for(i=0;i<8;i++)
        if(chess[i][col])
            return false;
    for(i=row+1,j=col+1;i<8&&j<8;++i,++j)
        if(chess[i][j])
            return false;
    for(i=row-1,j=col-1;i>=0&&j>=0;--i,--j)
        if(chess[i][j])
            return false;
    for(i=row-1,j=col+1;i>=0&&col<8;i--,++j)
        if(chess[i][j])
            return false;
    for(i=row+1,j=col-1;i<8&&col>=0;++i,--j)
        if(chess[i][j])
            return false;
    return true;
}