Cod sursa(job #2606)

Utilizator darklordHabalau Andrei darklord Data 18 decembrie 2006 10:20:16
Problema Dame Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#include <stdlib.h>
#define dim 201

int abs1(int n)
{	if(n<0)
		n*=-1;
	return n;
}

void tipar();

int bun(int k,int val);

void back(int k);

int n,sol[dim];

int main()
{	freopen ("dame.in","r",stdin);
	freopen ("dame.out","w",stdout);
	scanf("%d",&n);
	back(1);
	fclose(stdin);fclose(stdout);
	return 0;
}

void back(int k)
{   if (k==n+1)
	{	tipar();
		exit(0);
	}
	else
		for(int val=1;val<=n;++val)
			if(bun(k,val))
			{	sol[k]=val;
				back(k+1);
			}
}

int bun(int k,int val)
{	for(int i=1;i<k;++i)
		if(sol[i]==val||abs1(k-i)==abs1(val-sol[i]))
			return 0;
	return 1;
}

void tipar()
{   printf("%d\n",n);
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
			if(j==sol[i])
				printf("%d %d\n",i,j);
}