Cod sursa(job #2110458)

Utilizator ApolodorTudor Fernea Apolodor Data 20 ianuarie 2018 17:52:37
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>

using namespace std;

ifstream fi("damesah.in");
ofstream fo("damesah.out");

int n,k,d;
int a[14][14];

bool verif(int x, int y)
{
    for(int i=1;i<=n;i++)
        if(a[i][y]==1)
        return false;
    for(int j=1;j<=n;j++)
        if(a[x][j]==1)
        return false;
    for(int i=1;x+i<=n and y+i<=n;i++)
        if(a[x+i][y+i]==1)
        return false;
    for(int i=1;x-i>=1 and y-i>=1;i++)
        if(a[x-i][y-i]==1)
        return false;
    for(int i=1;x-i>=1 and y+i<=n;i++)
        if(a[x-i][y+i]==1)
        return false;
    for(int i=1;x+i<=n and y-i>=1;i++)
        if(a[x+i][y-i]==1)
        return false;
    return true;
}

void dame(int x, int y)
{
    if(x==n and d==n)
    {
        if(k==0)
      {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
            if(a[i][j]==1)
            fo<<j<<" ";
      }
        k++;
    }
    else
    for(int j=1;j<=n;j++)
        if(verif(x+1,j))
        {
            a[x+1][j]=1;
            d++;
            dame(x+1,j);
            d--;
            a[x+1][j]=0;
        }
}

int main()
{
    fi>>n;
    dame(0,1);
    fo<<endl;
    fo<<k;
}