Cod sursa(job #1096844)

Utilizator anaid96Nasue Diana anaid96 Data 2 februarie 2014 17:39:00
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<stdio.h>
#include<stdlib.h>

FILE *in,*out;

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

//constante 
const int Nmax=14;

//variabile
int n;
int answer[Nmax];

int main(void)
{
	in=fopen("damesah.in","rt");
	out=fopen("damesah.out","wt");
	fscanf(in,"%d",&n);
	
	back(1);
	
	fclose(in);
	fclose(out);
	return 0;
	
}	
void back(int k)
{
	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;
	
}	
void tipar()
{ 
	for(int i=1; i<=n; ++i)
		fprintf(out,"%d ",answer[i]);
	fprintf(out,"\n");
	fclose(in);
	fclose(out);
	return ;
	
}