Cod sursa(job #1483377)

Utilizator BodStfBodoarca Stefan BodStf Data 9 septembrie 2015 10:47:29
Problema Problema Damelor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
#include<math.h>

#define MAX 14
int N;
int sol[MAX],count;

int dif(int a,int b)
{
	if(a>b)
		return a-b;
	return b-a;
}

int verifica(int i)
{
	for(int k=0;k<i;k++)
		if(sol[k]==sol[i] || dif(sol[k],k)==dif(sol[i],i))
			return 0;
	return 1;
}

void bt(int i,FILE* out)
{
	if(i==N)
	{
		if(!count)
			for(int k=0;k<N;k++)
				fprintf(out,"%d ",sol[k]);
		count++;
		return;
	}

	for(int p=1;p<=N;p++)
	{
		sol[i]=p;
		if(verifica(i))
			bt(i+1,out);
	}
}


int main()
{
	FILE* f,*g;
	f=fopen("damesah.in","r");
	g=fopen("damesah.out","w");
	fscanf(f,"%d",&N);
	bt(0,g);
	fprintf(g,"\n%d",count);
	return 0;
}