You are on page 1of 1

Backtracking labirint

#include<stdio.h>
#include<conio.h>
int a[10][10], rez[10][10], n;
void tipareste()
{
int i,j;
for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%4d",rez[i][j]);
putchar('\n'); }
putchar('\n');
getch();
}
void labirint(int x, int y)
{
if((x==0)||(x==n-1)||(y==0)||(y==n-1))
{ rez[x][y]=1;
tipareste(); }
else { if((x+1<n)&&(rez[x+1][y]==0)&&(a[x+1][y]==1))
{ rez[x+1][y]=1;
labirint(x+1,y);
rez[x+1][y]=0; }
if((x-1>=0)&&(rez[x-1][y]==0)&&(a[x-1][y]==1))
{ rez[x-1][y]=1;
labirint(x-1,y);
rez[x-1][y]=0; }
if((x-1>=0)&&(rez[x-1][y]==0)&&(a[x-1][y]==1))
{ rez[x-1][y]=1;
labirint(x-1,y);
rez[x-1][y]=0; }
if((y+1<n)&&(rez[x][y+1]==0)&&(a[x][y+1]==1))
{ rez[x][y+1]=1;
labirint(x,y+1);
rez[x][y+1]=0; }
}
}
void main(void)
{
int i,j,xi,yi;
clrscr();
printf("intr dim mat: ");
scanf("%d",&n);
printf("intr val mat labirint \n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
rez[i][j]=0; }
printf("intr linia de pornire:");
scanf("%d",&xi);
printf("intr coloana de pornire: ");
scanf("%d",&yi);
rez[xi][yi]=1;
labirint(xi,yi);
}

You might also like