Cod sursa(job #1097641)

Utilizator anaid96Nasue Diana anaid96 Data 3 februarie 2014 18:42:40
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<stdio.h>
#include<stdlib.h>

FILE *in,*out;

//functii
void back(int k);
bool valid(int k);
int tipar();

//constante 
const int Nmax=14;

//variabile
int n;
int answer[Nmax];
bool prop=false;

int main(void)
{
	in=fopen("damesah.in","rt");
	out=fopen("damesah.out","wt");
	fscanf(in,"%d",&n);
	answer[0]=-1;
	back(1);
	
	fclose(in);
	fclose(out);
	return 0;
	
}	
void back(int k)
{
	if(prop==false)
	{	
		for(int i=1; i<=n; ++i)
		{
			answer[k]=i;
			if(valid(k))
				if(k==n)
					tipar();
				else
					back(k+1);
		}
	}	
}
bool valid(int k)
{
	if(answer[k]==answer[k-1]+1 || answer[k]+1==answer[k-1])
		return false;
	for(int i=1; i<k; ++i)
	{
		if(answer[k]==answer[i] || i-answer[i]==k-answer[k])
			return false;
	}	
	return true;
	
}	
int tipar()
{ 
	for(int i=1; i<=n; ++i)
		fprintf(out,"%d ",answer[i]);
	fprintf(out,"\n");
	prop=true;
}