Robot hľadajúci cestu z bludiska -> prehľadávanie so spatným návratom.
#include <cstdlib>
#include <iostream>
#include <windows.h>
#define MAXX 30
#define MAXY 30
#define PP 300
using namespace std;
char blud[MAXX][MAXY];
int r1,r2;
int d1,d2;
bool hura;
void generuj(void)
{
int i,j;
for(i = 0; i < MAXX; i++)
for(j = 0; j < MAXY; j++)
blud[i][j]=' ';
for(i = 0; i < MAXX; i++)
{
blud[i][0]='S';
blud[i][MAXY-1]='S';
}
for(i = 0; i < MAXY; i++)
{
blud[0][i]='S';
blud[MAXX-1][i]='S';
}
int app=0;
while (app<PP)
{
do
{
i=(rand()%(MAXX-2))+1;
j=(rand()%(MAXY-2))+1;
}while(blud[i][j]=='S'||(i==1&&j==1)||(i==MAXX-2&&j==MAXY-2));
blud[i][j]='S';
app++;
}
r1=r2=1;blud[r1][r2]='R';
d1=MAXX-2;d2=MAXY-2;blud[d1][d2]='D';
}
void vypis(void)
{
int i,j;
system("cls");
for(i =0;i<MAXX;i++)
{
for(j=0;j<MAXY;j++) putchar(blud[j][i]);
putchar('\n');
}
}
int kracaj(int x,int y)
{
if(blud[x][y]=='D')return 0;
if(blud[x][y+1]==' '||blud[x][y+1]=='D')
{blud[x][y]='1';vypis();if(kracaj(x,y+1)==0)return 0;}
if(blud[x+1][y]==' '||blud[x+1][y]=='D')
{blud[x][y]='2';vypis();if(kracaj(x+1,y)==0)return 0;}
if(blud[x][y-1]==' '||blud[x][y-1]=='D')
{blud[x][y]='3';vypis();if(kracaj(x,y-1)==0)return 0;}
if(blud[x-1][y]==' '||blud[x-1][y]=='D')
{blud[x][y]='4';vypis();if(kracaj(x-1,y)==0)return 0;}
blud[x][y]=' ';
return 1;
}
int main(int argc, char *argv[])
{
srand((unsigned)time(NULL));
generuj();
vypis();
hura=false;
kracaj(r1,r2);
system("PAUSE");
return EXIT_SUCCESS;
}