Pagini recente » Cod sursa (job #2030039) | Cod sursa (job #2374695) | Cod sursa (job #2619672) | Cod sursa (job #1048500) | Cod sursa (job #2653535)
#include <fstream>
using namespace std;
ifstream in("damesah.in");
ofstream out("damesah.out");
const int NMAX = 13;
int n;
int sol[1 + NMAX];
int nr_sol;
bool gasit;
bool coloana[1 + NMAX];
bool diagonala1[2 * NMAX];
bool diagonala2[2 * NMAX];
void generare(int index)
{
if (index > n)
{
if (!gasit)
{
gasit = true;
for (int i = 1; i <= n; i++)
{
out << sol[i] << ' ';
}
out << '\n';
}
nr_sol++;
}
else
{
for (int i = 1; i <= n; i++)
{
if (!coloana[i] && !diagonala1[n - i + index] && !diagonala2[n - index + n - i])
{
coloana[i] = true;
diagonala1[n - i + index] = true;
diagonala2[n - index + n - i] = true;
sol[index] = i;
generare(index + 1);
coloana[i] = false;
diagonala1[n - i + index] = false;
diagonala2[n - index + n - i] = false;
}
}
}
}
int main()
{
in >> n;
generare(1);
out << nr_sol;
return 0;
}