Cod sursa(job #431626)

Utilizator btamasyaBorsos Tamas btamasya Data 1 aprilie 2010 11:14:26
Problema Kdrum Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include<iostream.h>
#include<fstream.h>
int a[100][100],x2,y2,min=2000;
void bizz (int i,int j, int s)
{
	int b;
	if (((i==x2)&&(j==y2)))
		{if (s<min) min=s;}
	else 
	{
		b=a[i][j];
		a[i][j]=0;
		if (s<min)
		{
		if ((a[i+1][j]!=0)&&(a[i+1][j]!=-1))bizz (i+1,j,s+1);
		if ((a[i-1][j]!=0)&&(a[i-1][j]!=-1))bizz (i-1,j,s+1);
		if ((a[i][j+1]!=0)&&(a[i][j+1]!=-1))bizz (i,j+1,s+1);
		if ((a[i][j-1]!=0)&&(a[i][j-1]!=-1))bizz (i,j-1,s+1);
		}
		a[i][j]=b;
	}
}
/*void nezz (int i,int j,int k,int s)
{
	int b,z;
	if (k%a[i][j]==0) k=k/a[i][j];
	else
	{
	for (z=a[i][j]/2;z>1;z--)
	{
		if (a[i][j]%z==0)
			if (k%z==0)
				k=k/z;
	}
	}
	b=a[i][j];
	a[i][j]=0;
	if (k==1) {a[i][j]=b;bizz(i,j,s);a[i][j]=0;}
	else
	{
	if ((a[i+1][j]!=0)&&(a[i+1][j]!=(-1)))nezz (i+1,j,k,s+1);
	if ((a[i-1][j]!=0)&&(a[i-1][j]!=(-1)))nezz (i-1,j,k,s+1);
	if ((a[i][j+1]!=0)&&(a[i][j+1]!=(-1)))nezz (i,j+1,k,s+1);
	if ((a[i][j-1]!=0)&&(a[i][j-1]!=(-1)))nezz (i,j-1,k,s+1);
	}
	a[i][j]=b;
}*/
int main()
{
	int x1,y1,i,j,n,m,k;
	fstream f,g;
	f.open("kdrum.in",ios::in);
	g.open("kdrum.out",ios::out);
	f>>n>>m>>k;
	f>>x1>>y1>>x2>>y2;
	for (i=0;i<n+10;i++)
		for (j=0;j<m+10;j++)
			a[i][j]=-1;
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
			f>>a[i][j];
	bizz (x1,y1,1);
	g<<min;
}