C/C++: Problema Labirintului

Postat în C/C++, Probleme , pe data 11 November 2008

Problema clasică de programare care necesită back-tracking (revenirea pe urma lăsată) este problema ieşirii din labirint:

- iată o soluţie simplă care iniţializează labirintul în mod static, ca o matrice de caractere

#include
#include
#include
#define XMAX 6
#define YMAX 6

char a[XMAX+1][YMAX+1]={
“*******”,
“* * *”,
“* * * *”,
“* * ****”,
“** * *”,
“* * “,
“********”
};
int x0=1,y0=2;

void print(void){
int i,j;
for(i=0;i<=XMAX;i++){
for(j=0;j<=YMAX;j++)putchar(a[i][j]);
putchar('\n');
}
getchar();clrscr();
}

void escape(int x,int y){
if(x==XMAX || y==YMAX){ puts("Succes!");exit(1);}
a[x][y]='*';print();
if(a[x][y+1]==' '){puts("la dreapta");escape(x,y+1);}
if(a[x+1][y]==' '){puts("in jos ");escape(x+1,y);}
if(a[x][y-1]==' '){puts("la stinga ");escape(x,y-1);}
if(a[x-1][y]==' '){puts("in sus ");escape(x-1,y);}
return;
}

void main(void){
escape(x0,y0);
puts("Traped!");
}

Comentarii (1)

Lasă un comentariu, un sfat sau o întrebare: