Cod sursa(job #631705)

Utilizator thelasMatei Vlad thelas Data 9 noiembrie 2011 17:26:36
Problema Grupuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<cstdio>
using namespace std;
int st[100],i,j,k,n,a[100][100],x,y,p,m;
void tipar(int n)
{
	for(i=1;i<=n;++i)
	{
		for(j=1;j<=m;++j)
		printf("%d ",a[i][j]);
		printf("\n");
	}
	printf("\n");
}
void tabla(int x,int y,int a[100][100],int p,int h)
{
	if(a[x][y]==0&&h!=a[x][y-1]&&h!=a[x][y+1]&&h!=a[x+1][y]&&h!=a[x-1][y]&&h!=a[x-1][y-1]&&h!=a[x+1][y-1]&&h!=a[x-1][y+1]&&h!=a[x+1][y+1])
		{  
			a[x][y]=h;
		if(p==n*m)
			tipar(n);
			else
				for(h=1;h<=4;h++)
			{
			tabla(x,y+1,a,p+1,h);
			tabla(x,y-1,a,p+1,h);
			tabla(x+1,y,a,p+1,h);
			tabla(x-1,y,a,p+1,h);
			tabla(x-1,y-1,a,p+1,h);
			tabla(x+1,y-1,a,p+1,h);
			tabla(x-1,y+1,a,p+1,h);
			tabla(x+1,y+1,a,p+1,h);}
		a[x][y]=0;
			
	}
}
int main()
{
	printf("n= ");
	scanf("%d",&n);
	printf("m= ");
	scanf("%d",&m);
	for(i=0;i<=n+1;i++)
		for(j=0;j<=m+1;j++)
			a[i][j]=-1;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			a[i][j]=0;
		tabla(1,1,a,1,1);
		return 0;
}