Pagini recente » Cod sursa (job #1543545) | Cod sursa (job #2647266) | Cod sursa (job #219518) | Cod sursa (job #2605148) | Cod sursa (job #1246634)
#include <fstream>
#include <cmath>
using namespace std;
ifstream is ("damesah.in");
ofstream os ("damesah.out");
int N, x[15], sol;
bool b, W[15], NW[35], SW[35];
#define NW (NW+15)
void Dame(int k);
void Write();
bool OK(int k);
int main()
{
is >> N;
Dame(1);
os << sol;
is.close();
os.close();
}
void Dame(int k)
{
if (k > N)
{
sol++;
if (b == 0)
Write(), b = 1;
return;
}
for (int i = 1; i <= N; ++i)
{
x[k] = i;
if (OK(k))
{
W[i] = 1;
NW[k - x[k]] = 1;
SW[k + x[k]] = 1;
Dame(k+1);
W[i] = 0;
NW[k - x[k]] = 0;
SW[k + x[k]] = 0;
}
}
};
bool OK(int k)
{
if (W[x[k]] == 1) return false;
if (NW[k - x[k]] == 1) return false;
if (SW[k +x [k]] == 1) return false;
return true;
};
void Write()
{
for (int i = 1; i <= N; ++i)
os << x[i] << ' ';
os << '\n';
};