Cod sursa(job #2333222)

Utilizator RomanianSolverFlorea Ciprian RomanianSolver Data 31 ianuarie 2019 19:46:37
Problema Dame Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream f("regine.in");
ofstream g("regine.out");
int n;
int st[15], ams, ev, sol;

int pune_valoare(int niv)
{
    int ok = 0;
    if (niv <= n && st[niv] < n)
    {
        st[niv]++;
        ok = 1;
    }
    return ok;
}

int validare(int niv)
{
    int ok = 1 , i;
    for (i = 1; i < niv; i++)
    {
        if (st[niv] == st[i])
            ok = 0;
    }
    for (i = 1; i < niv ; i++)
    {
        if (abs(niv - i) == abs(st[niv] - st[i]))
            ok = 0;
    }
    return ok;
}

void tipar(int niv)
{
    int i,j;
    g<<n<<'\n';
    for (i = 1 ; i <= n; i++)
        g<<i<<" "<<st[i]<<'\n';
   /* for (i = 1; i <= n; i++)
        { for (j = 1; j <= n ; j ++)
            if(st[i] == j) g<<"* ";
            else g<<"- ";
          g<<'\n';
        }
        g<<'\n';*/
}

int solutie(int niv)
{
    return (niv == n);
}

void bck()
{ int niv;
  niv = 1;
  while(niv > 0)
  {
      do{
           ams = pune_valoare(niv);
           if( ams == 1)
               ev = validare(niv);
       } while(ams==1&& ev==0);

       if(ams == 1 && ev ==1)
        {
           if(solutie(niv) == 1)
                 {
                     tipar(niv);///sol++;         /// tipar(niv);
                     niv = 0;
                 }
           else
            { niv++;
              st[niv] = 0;
             }
        }
       else niv--;
  }

}


int main()
{   sol = 0;
    f>>n;
    bck();
    ///g<<sol;
    return 0;
}