数据结构与算法:深度寻路算法的C++实现

本文介绍如何用C++实现深度优先搜索(DFS)算法,应用于解决二维地图中的路径寻找问题。在全0和1构成的地图中,1为障碍,0为通路。程序接收起点和终点坐标,通过DFS找出从起点到终点的可行路径。
摘要由CSDN通过智能技术生成

任务:使用C++实现深度寻路算法。

效果:在一张由1和0组成的二维地图中,1代表墙壁,0代表通道,输入终点和起点,利用深度寻路算法找出由起点到终点的路径。

main.h代码如下:

#include <iostream>
#include "MyStack.h"
#include "windows.h"

//地图行数,列数
#define ROWS 8
#define COLS 8

using namespace std;

//枚举类型,探索方向
enum Direct {D_up,D_right,D_down,D_left};

//定义坐标,表示位置
struct Pos {
    int Row;
    int Col;
};

//辅助地图基本类
struct Mark {
    int  val;               //0表示通路,1表示墙壁
    bool bIsFound;          //是否已被探索
    Direct DirSearch;       //当前寻路方向
};


//重载运算符 == ,用于Pos变量的比较
bool operator ==(const Pos& p1, const Pos& p2) {
    if (p1.Row == p2.Row && p1.Col == p2.Col)
    {
        return true;
    }
    return false;
}

//重载运算符 != ,用于Pos变量的比较
bool operator !=(const Pos& p1, const Pos& p2) {
    if (p1.Row != p2.Row || p1.Col != p2.Col)
    {
        return true;
    }
    return false;
}

//打印坐标位置
void PrintPos(const Pos& MyPos)
{
    printf_s("(%d,%d)\n", MyPos.Row, MyPos.Col);
}


//打印实时演算情况
void PrintMap(int Map[ROWS][COLS], Pos CurrentPos)
{
    //清屏
    system("cls");
    for (int i = 0; i < ROWS; i++)
    {
        for (int j = 0; j < COLS; j++)
        {
            if (CurrentPos.Row == i && CurrentPos.Col == j)
            {
                cout << "人";
            }
            else if (Map[i][j] == 1)
            {
                cout << "口";
            }
            else
            {
                cout << "  ";
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值