Cod sursa(job #2028069)

Utilizator ImbuzanRaduImbuzan Radu ImbuzanRadu Data 27 septembrie 2017 09:19:03
Problema Problema Damelor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("damesah.in");
ofstream g("damesah.out");

int mat[15][15],cont,n,a[14],cont2;

void afisare(){
  if(cont2==0){
         for(int i=1;i<=n;i++){
          for(int j=1;j<=n;j++)
            if(mat[i][j]==1)
              a[i]=j;
         }
          for(int i=1;i<=n;i++)
            g<<a[i]<<" ";
  }
  cont2++;
 g<<'\n';
}

bool ok(int ii,int jj){
    int o=1;
    for(int i=1;i<=n;i++){
        if(mat[i][jj]==1 || mat[ii][i] == 1 )
            o=0;
        if(ii==jj){
            if(mat[i][i]==1)
                o=0;
        }
        if(mat[ii-1][jj-1] == 1 || mat[ii+1][jj+1]==1)
          o=0;
    }
    return o;
}

void gen(int pozi,int pozj){
    if( cont==n) afisare();
    else {
        for(int i=pozi;i<=n;i++)
            for(int j=pozj;j<=n;j++)
            if(ok(i,j)==1 && mat[i][j]==0){
                    cont++;
                mat[i][j]=1;
                if(j<n)
                    gen(i,j+1);
                else gen(i+1,1);
                mat[i][j]=0;
            cont--;
        }
    }
}

int main()
{
    f>>n;
    gen(1,1);
    g<<cont2*2;
    return 0;
}