4 queens problem

 #include <iostream>

#define n 4
using namespace std;
int col[n+1],RD[2*n],LD[2*n],a[n+1];

int issafe(int i, int j)
{
    if (col[j] == 1 || LD[i + n - j] == 1 || RD[i + j - 1] == 1)
        return 0;
    else
        return 1;
}
int placequeen(int i)
{
    int j;
    if (i <= n)
    {
        for (j = 1; j <= n; j++)
        {
            if (issafe(i, j) == 1)
            {
                a[i] = j;
                col[j] = LD[i + n - j] = RD[i + j - 1] = 1;
                if (i == n)
                    return 1;
                else if (placequeen(i + 1) == 1)
                    return 1;
                a[i] = 0;
                col[j] = LD[i + n - j] = RD[i + j - 1] = 0;
            }
        }
        return 0;
    }
}
int main()
{
    int i,j;
    for ( i = 1; i < n+1; i++)
    {
        col[i]=a[i]=0;
       
    }
    for ( i = 1; i <= 2*n; i++)
    {
        RD[i]=LD[i]=0;
    }
    if(placequeen(1)==1)
    {
        for ( i = 1; i <=n ; i++)
        {
            cout<<a[i]<<" ";
        }
    }
   
   
   
   
    return 0;
}

Comments

Popular Posts