Cod sursa(job #2012948)

Utilizator PinkiePie1189Preoteasa Mircea-Costin PinkiePie1189 Data 19 august 2017 22:02:45
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<stdio.h>
#define MAXN 14
void bkt(int lin);
FILE*fin,*fout;
short int queen[MAXN];
bool col[MAXN],princ[2*MAXN],second[2*MAXN];
int N;
int ans;
int main()
{
	fin=fopen("damesah.in","r");
	fout=fopen("damesah.out","w");
	fscanf(fin,"%d",&N);
	ans=0;
	bkt(1);
	fprintf(fout, "%d\n",ans);
	fclose(fin);
	fclose(fout);
	return 0;
}
void bkt(int lin)
{
	if(lin==N+1)
	{
		if(ans==0)
		{
			for(int i=1;i<=N;i++)
			{
				fprintf(fout, "%d ",queen[i]);
			}
			fprintf(fout, "\n");

		}
		ans++;
	}
	else
	{
		int initprinc=N-lin+1;
		int initsecond=2*N-lin;
		for(int c=1;c<=N;c++)
		{
			if(!col[c] && !princ[initprinc+c-1] && !second[initsecond-(c-1)])
			{
				//putem sa punem o dama
				queen[lin]=c;
				col[c]=1;
				princ[initprinc+c-1]=1;
				second[initsecond-(c-1)]=1;
				bkt(lin+1);
				col[c]=0;
				princ[initprinc+c-1]=0;
				second[initsecond-(c-1)]=0;
			}
		}
	}
}