Cod sursa(job #2483982)

Utilizator invoIlioi Alexandru invo Data 30 octombrie 2019 16:38:20
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include<fstream>
#include<iostream>
using namespace std;

ifstream f("damesah.in");
ofstream g("damesah.out");

int n,board[14][14],c;
bool found;

void BK(int k)
{
	if (k == n + 1)
	{
		if (c == 0)
		{
			for (int i = 1; i <= n; ++i)
			{
				for (int j = 1; j <= n; ++j)
				{
					if (board[i][j] == 1)
					{
						g << j << ' ';
					}
				}
			}
			g << '\n';
		}
		c++;
		return;
	}
	for (int i = 1; i <= n; ++i)
	{
		if (board[k][i] == 0)
		{
			board[k][i] = 1;
			for (int j = k + 1; j <= n; ++j)
				board[j][i] -= 1;
			for (int j = k + 1, m = i + 1; m <= n && j <= n; ++m, ++j)
			{
				board[j][m] -= 1;
			}
			for (int j = k + 1, m = i - 1; m >= 1 && j <= n; --m, ++j)
			{
				board[j][m] -= 1;
			}
			BK(k + 1);
			board[k][i] = 0;
			for (int j = k + 1; j <= n; ++j)
				board[j][i] += 1;
			for (int j = k + 1, m = i - 1; m >= 1 && j <= n; --m, ++j)
			{
				board[j][m] += 1;
			}
			for (int j = k + 1, m = i + 1; m <= n && j <= n; ++m, ++j)
			{
				board[j][m] += 1;
			}
		}
	}
}

int main()
{
	f >> n;
	BK(1);
	g << c << '\n';
}