Pagini recente » Cod sursa (job #1789541) | Cod sursa (job #1132279) | Cod sursa (job #301034) | Cod sursa (job #2483956) | Cod sursa (job #1718809)
#include <fstream>
#include <iostream>
using namespace std;
ofstream out("damesah.out");
short matrix[14][14];
short cols[14];
short decided_pos[14];
bool wrote = false;
int nr_sol = 0;
int max_linii;
void print_matrix()
{
return;
for (int i = 0; i < max_linii; i++)
{
for (int j = 0; j < max_linii; j++)
cout << matrix[i][j] << " ";
cout << endl;
}
cout << endl;
}
void modify_spaces(bool added, int linie, int col)
{
int q = added ? 1 : -1;
for (int i = 0; i < max_linii; i++)
{
matrix[i][col] += q;
matrix[linie][i] += q;
}
print_matrix();
int i = linie, j = col;
while (i < max_linii && j < max_linii)
{
matrix[i][j] += q;
i++, j++;
}
i = linie, j = col;
while (i < max_linii && j >= 0)
{
matrix[i][j] += q;
i++, j--;
}
i = linie, j = col;
while (i >= 0 && j < max_linii)
{
matrix[i][j] += q;
i--, j++;
}
i = linie, j = col;
while (i >= 0 && j >= 0)
{
matrix[i][j] += q;
i--, j--;
}
print_matrix();
}
void bkt(int linie)
{
int col = -1;
if (linie >= max_linii)
{
if (!wrote)
{
for (int i = 0; i < max_linii; i++)
{
out << decided_pos[i] + 1 << " ";
}
out << endl;
wrote = true;
}
nr_sol++;
return;
}
while (true)
{
col++;
if (col < max_linii && matrix[linie][col] == 0)
{
modify_spaces(true, linie, col);
decided_pos[linie] = col;
bkt(linie + 1);
modify_spaces(false, linie, col);
}
else if (col >= max_linii)
return;
}
}
int main()
{
ifstream in("damesah.in");
in >> max_linii;
bkt(0);
out << nr_sol << endl;
return 0;
}