Cod sursa(job #1157190)

Utilizator Kira96Denis Mita Kira96 Data 28 martie 2014 12:16:03
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<fstream>
#define N 15
#define FOR(a,b,c) for(int a=b;a<=c;a++)
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int n,lin[N],col[N],d1[2*N],d2[2*N],m[N][N],OK,sol;
void back(int k)
{
	if(k>n)
	{
		sol++;
		if(OK)
			return;
		OK=1;
		FOR(i,1,n)
		g<<lin[i]<<" ";
		g<<"\n";
		return;
	}
	FOR(i,1,n)
	{
		if(!col[i]&&!m[k][i])
		{
			if(d1[k+i]||d2[k-i+N])
			continue;
			d1[k+i]=d2[k-i+N]=1;
			
			col[i]=1;
			lin[k]=i;
			
			back(k+1);
			
			col[i]=0;
			d1[k+i]=d2[k-i+N]=0;
		}
	}
}
int main()
{
	f>>n;
	back(1);
	g<<sol;
	return 0;
}