Pagini recente » Cod sursa (job #1196651) | Cod sursa (job #2984866) | Cod sursa (job #3160010) | Cod sursa (job #2961382) | Cod sursa (job #3139020)
#include <fstream>
using namespace std;
ifstream cin ("damesah.in");
ofstream cout ("damesah.out");
int lungime , tabla[14][14] , ocupat[3][30] , pozitii[14] , modalitati;
void Afisare ()
{
for (int indice = 1 ; indice <= lungime ; indice++)
cout << pozitii[indice] << ' ';
cout << '\n';
}
bool Valid (int linie , int coloana)
{
if (ocupat[0][coloana])
return false;
if (ocupat[1][lungime + linie - coloana])
return false;
if (ocupat[2][linie + coloana - 1])
return false;
return true;
}
void Backtracking (int linie)
{
for (int coloana = 1 ; coloana <= lungime ; coloana++)
if (Valid(linie , coloana))
{
pozitii[linie] = coloana;
ocupat[0][coloana] = ocupat[1][lungime + linie - coloana] = ocupat[2][linie + coloana - 1] = 1;
if (linie == lungime && ++modalitati == 1)
Afisare();
else
if (linie < lungime)
Backtracking(linie + 1);
ocupat[0][coloana] = ocupat[1][lungime + linie - coloana] = ocupat[2][linie + coloana - 1] = 0;
}
}
int main ()
{
cin >> lungime;
Backtracking(1);
cout << modalitati;
cout.close(); cin.close();
return 0;
}