Разработка программы поиска минимального пути в лабиринте

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



//генерация лабиринта(int i=0;i<sX;i++)(int j=0;j<sY;j++)

{ rnd=rand()%4;[i][j]=rnd; }(int t=0;tstop;0;

}Volna(int* lab,int kol)

{lb[sX][sY];//модифицированая копия лабиринтаNi=0, x=0, y=0, copX, copY;//Ni - кольво итераций, x,y,copX,copY - для хранения координатmin=300, copMin=300; //для поиска минимального путиwork=true; //для избежания зацикливания

//заполнения модифицированого лабиринта для волнового метода(int i=0;i<sX;i++)(int j=0;j<sY;j++)

{(*(lab+j+i*sY)/3==0)lb[i][j]=254;(*(lab+j+i*sY)==3)lb[i][j]=255;(*(lab+j+i*sY)==4)

{(kol==2)[i][j]=253;[i][j]=0;-;

}

}

//формирование волны(work)

{(int k=0;k<sX;k++)(int l=0;l<sY;l++)(lb[k][l]==Ni)

{(l+1!=sY)

{(lb[k][l+1]==254)[k][l+1]=Ni+1;(lb[k][l+1]==253){x=k;y=l+1;work=false;}

}(k+1!=sX)

{(lb[k+1][l]==254)[k+1][l]=Ni+1;(lb[k+1][l]==253){x=k+1;y=l;work=false;}

}(l-1!=-1)

{(lb[k][l-1]==254)[k][l-1]=Ni+1;(lb[k][l-1]==253){x=k;y=l-1;work=false;}

}(k-1!=-1)

{(lb[k-1][l]==254)[k-1][l]=Ni+1;(lb[k-1][l]==253){x=k-1;y=l;work=false;}

}

}++;(Ni==250)work=false;

}

//поиск минимального пути(Ni!=250)

{(copMin!=0)

{(y+1!=sY)(min>lb[x][y+1])

{=lb[x][y+1];=y+1;=x;

}(y-1!=-1)(min>lb[x][y-1])

{=lb[x][y-1];=y-1;=x;

}(x+1!=sX)(min>lb[x+1][y])

{=lb[x+1][y];=x+1;=y;

}(x-1!=-1)(min>lb[x-1][y])

{=lb[x-1][y];=x-1;=y;

}=copX; y=copY; copMin=min; min=300; *(lab + y + x*sY)=5;

}

*(lab + y + x*sY)=4;

}return false;true;

}LabOut(int* lab,char* bl)

{(int i=0;i<sX;i++)

{(int j=0;j<sY;j++)<<bl[*(lab+j+i*sY)];<<endl;

}<<"--------------------------------------------------------------------------------";

}Prior(int* lab,int kol)

{x, y, startX, startY, copX, copY,stop=0; //хранение координатlb[sX][sY];//модифицированая копия лабиринтаmin=300;//для нахождения минимального приоритетаwork=true;//для избежания зацикливания

//создания модифицированого лабиринта под метод приоритетов(int i=0;i<sX;i++)(int j=0;j<sY;j++)

{((*(lab+j+i*sY)/3==0) || (*(lab+j+i*sY)==5)){lb[i][j]=0;*(lab + j + i*sY)=0;}(*(lab+j+i*sY)==3)lb[i][j]=255;(*(lab+j+i*sY)==4)

{(kol==2)

{[i][j]=0;=i;startY=j;

}[i][j]=254;-;

}

}=startX; y=startY;//хранение точки входа

//реализация алгоритма поиска(work)

{(y+1!=sY)

{(lb[x][y+1]==254)

{work=false; min=0;copY=y+1;copX=x;}(min>lb[x][y+1])

{min=lb[x][y+1];copY=y+1;copX=x;}

}(y-1!=-1)

{(lb[x][y-1]==254)

{work=false; min=0;copY=y-1; copX=x;}(min>lb[x][y-1])

{min=lb[x][y-1]; copY=y-1; copX=x;}

}(x+1!=sX)

{(lb[x+1][y]==254)

{work=false; min=0;copX=x+1; copY=y;}(min>lb[x+1][y])

{min=lb[x+1][y]; copX=x+1; copY=y;}

}(x-1!=-1)

{(lb[x-1][y]==254)

{work=false; min=0;copX=x-1; copY=y;}(min>lb[x-1][y])

{min=lb[x-1][y]; copX=x-1; copY=y;}

}++; lb[x][y]++; x=copX; y=copY; min=300; *(lab + y + x*sY)=5;(stop==250)work=false;

}

*(lab + startY + startX*sY)=*(lab + y + x*sY)=4;(stop==250)work=true;!work;

}