Лабиринт - двумерный массив сгенерированный случайным образом размером MxN. Состав: 1 - стенка, 0 - ход свободен.
Пользователь, задает координаты входа ENTER_X, ENTER_Y и выхода EXIT_X, EXIT_Y. Процедура должна отыскать любой реальный способ "дойти" от входа к выходу. Результат заносится в виде координат пути в массив структур struct Coord Way[Steps]; Где Coords struct {int x; int y; } ; Steps - количество верных шагов
Примечание:
Простите, не хватает ума сделать эту функцию.. Не математик я и не шахматист - не могу придумать простого алгоритма..
Вот то что у меня есть на данный момент:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std;
// Global variables
int SIZE_X;
int SIZE_Y; // Size of Maze Matrix
int ENTER_X; // Coordinats of Enter
int ENTER_Y;
int EXIT_X; // Coordinate of Exit
int EXIT_Y;
int Maze[100][100]; // Matrix of Maze
int Rnd;
int Done=0;
int Start=0;
int CurX;
int CurY;
int LastX;
int LastY;
int Steps=0;
// Structure for output array
struct gps
{
int Xc;
int Yc;
} ;
struct gps Output_way[100]; // Output array
struct gps Way[100];
// Functions utility
int getrand (int toprange)
{
return (rand () % toprange) + 1;
}
// Program procedures
void CreateMaze()
{
for (int x=1; x<=SIZE_X; x++)
{
for ( int y=1; y<=SIZE_Y; y++)
{
if (getrand(2)<2) { Maze[x][y]=1 ;} else { Maze[x][y]=0;}
// Enter-Exit can not be on the diagonal:
if ((x==1 && y==1) || (x==SIZE_X && y==1) || (x==1 && y==SIZE_Y) || (x==SIZE_X && y==SIZE_Y) ) {Maze[x][y]=1;}
}
}
}
void ShowMaze()
{
for (int y=1; y<=SIZE_Y; y++)
{
for ( int x=1; x<=SIZE_X; x++)
{
cout<<Maze[x][y]<<" ";
if (x==(SIZE_X)) { cout<<"\n"<<endl;}
}
}
}
bool IsFree(int X,Y)
{
bool free;
if (Maze[X][Y]==0) {free=true;} else {free=false;}
return free;
}
void FindWay()
{
// ???
}
int main()
{
srand (time (NULL));
cout<<"Input X size of Maze ";
cin>>SIZE_X;
cout<<"Input Y size of Maze ";
cin>>SIZE_Y;
cout<<" \n"<<endl;
CreateMaze();
ShowMaze();
cout<<"Input X coordinate of enter ";
cin>>ENTER_X;
cout<<"Input Y coordintate of enter ";
cin>>ENTER_Y;
cout<<"\n"<<endl;
cout<<"Input X coordinate of exit ";
cin>>EXIT_X;
cout<<"Input Y coordintate of exit ";
cin>>EXIT_Y;
cout<<"Finding way... \n"<<endl;
FindWay();
cout<<"Done... \n"<<endl;
}
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.