Project1 迷宫寻路 实验报告
思路
1.从指定地址输入一个给定大小的01数组,0代表通路,1代表墙体。
2.定义结构体node,包括横坐标x,纵坐标y,指向前一个位置的指针pre。定义node数组way[100],并将其首元素初始化(第一个元素的pre为空指针)。
3.用check()判断是否通路。
4.用循环表示四个方向的运动。
5.用寻路函数寻找路径。
6.输出。
寻路算法
1.对任意一个节点,按照“右—下—左—上”的顺序依次寻找通路并把该点标记为墙体。
2.如果找到了一条通路,将通路位置的坐标写入数组的下一个元素,并把该元素的地址设置为下一个元素的pre指针。
若此时该点为终点,输出,结束。否则继续。
3.如果四周均不通,则回溯(数组下标-1)。
如上循环,直到找到终点为止。
代码
//head.h
#ifndef _HEAD_H_
#define _HEAD_H_
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
void pre();
void input();
bool check(int i, int j);
void inputlen();
void search();
#endif
//body.cpp
#include"head.h"
static int maze[3000][3000];//开迷宫
int length;
int width;
int startx;
int starty;
int finalx;
int finaly;//定义迷宫的长、宽、起点终点位置
struct node
{
int x;
int y;
struct node* pre;
}way[100] = {
{
startx,starty,NULL} };