Cod sursa(job #231356)

Utilizator bughyBondane Bogdan bughy Data 14 decembrie 2008 12:11:08
Problema Tablete Scor 0
Compilator cpp Status done
Runda Algoritmiada 2009, Runda 1, Studenti Marime 0.87 kb
#include <stdio.h>
#include <stdlib.h>

int aux[10000];
long a[100][100],n,k;

void back(int i, int j);
void done();

int main()
{
	freopen("tablete.in", "r", stdin);
	freopen("tablete.out", "w", stdout);
	scanf("%ld %ld", &n, &k);

	back(1,1);

	return 0;
}

void back(int i,int j)
{
	for(int p=1;p<=n*n;p++)
		if(aux[p]==0&&p>a[i][j-1])
		{
			if(j==k)
			{
				if(p%2==0)
				{
					aux[p]=1;
					a[i][j]=p;
					if(i==n&&j==n)
						done();

					if(j<n)
						back(i,j+1);
					else
						back(i+1,1);
					aux[p]=0;
				}
			}
			else
			{	
				aux[p]=1;
				a[i][j]=p;
				if(i==n&&j==n)
					done();
				
				if(j<n)
					back(i,j+1);
				else
					back(i+1,1);
				aux[p]=0;			
			}
		}
}

void done()
{
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
			printf("%ld ", a[i][j]);
		printf("\n");
	}
	exit(1);
}