Cod sursa(job #1473064)

Utilizator HealeruDaniel Guramulta Healeru Data 18 august 2015 14:21:22
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>
using namespace std;

int n,Q[20][20];
int nr;

ifstream fin("damesah.in");
ofstream fout("damesah.out");

/*bool inside(int i,int j){
   return i<=n && j<=n;
}*/

/**
a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
a41 a42 a43 a44
*/

bool ok(int i,int j){
int k=i,m=j;
while (k && m){
    k--;m--;
    if (Q[k][m]==1) return false;
}
k=i;m=j;
while (m){
    m--;
    if (Q[k][m]==1) return false;
}
k=i;m=j;
while (k<=n && m){
    k++;m--;
    if (Q[k][m]==1) return false;
}
return true;
}

void print(){
 for (int i=1;i<=n;i++)
      for (int j=1;j<=n;j++)
           if (Q[i][j]==1) fout<< j <<' ';

fout<<endl;

}

void place(int k){
  int i;
  for (i=1;i<=n;i++){
       if (ok(i,k)){
            Q[i][k]=1;
            if (k==n) { nr++; if (nr == 1) print();}
            else place(k+1);
            Q[i][k]=0;
       }
  }
}



int main(){
fin >> n;
place(1);
fout << nr;
return 0;
}