IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 迷宫问题-深度搜索-数据结构-栈应用 -> 正文阅读

[数据结构与算法]迷宫问题-深度搜索-数据结构-栈应用

#include<iostream>
#include<stack>

using namespace std;
struct index
{
    int x;
    int y;
    index(int x, int y) :x(x), y(y) {}
};


class S :public stack<index>
{

public:
    int lx, ly, ox, oy, w, h;
    int **maze;
    bool **mark;
    S(int** p, int w, int h) :stack<index>()
    {
        maze = p;
        this->w = w;
        this->h = h;
        mark = new bool*[h];
        for (int i = 0; i < h; i++)
        {
            mark[i] = new bool[w];
            for (int j = 0; j < w; j++)
                mark[i][j] = false;
        }
    }
    void get_last()
    {
        for (int i = 0; i < h; i++)
        {
            for (int j = 0; j < w; j++)
            {
                if (maze[i][j] == 4)
                {
                    this->lx = i;
                    this->ly = j;
                    return;
                }
            }
        }
    }
    void get_orginal()
    {
        for (int i = 0; i < h; i++)
        {

            for (int j = 0; j < w; j++)
            {

                if (maze[i][j] == 3)
                {
                    this->ox = i;
                    this->oy = j;
                    return;
                }
            }

        }
    }
    bool seekpath(int x, int y)
    {
        index ind(x, y);
        mark[x][y] = true;

        push(ind);
        if (maze[x][y] == 4)
        {
            cout << *this;
            return 1;
        }
        if ((x + 1) < h && !this->panduan(x + 1, y) && maze[x + 1][y] != 1 && maze[x + 1][y] != 3 && seekpath(x + 1, y)) { return 1; }
        if ((y - 1) >= 0 && !this->panduan(x, y - 1) && maze[x][y - 1] != 1 && maze[x][y - 1] != 3 && seekpath(x, y - 1)) { return 1; }
        if ((x - 1) >= 0 && !this->panduan(x - 1, y) && maze[x - 1][y] != 1 && maze[x - 1][y] != 3 && seekpath(x - 1, y)) { return 1; }
        if ((y + 1) < w && !this->panduan(x, y + 1) && maze[x][y + 1] != 1 && maze[x][y + 1] != 3 && seekpath(x, y + 1)) { return 1; }
        pop();
        return 0;
    }
    friend ostream& operator<<(ostream& out, S& s) {
        stack<index> s1;
        while (!s.empty()) {

            s1.push(s.top());
            s.pop();
        }
        while (!s1.empty())
        {
            index indx = s1.top();
            out << indx.y << " " << indx.x << endl;
            s1.pop();
        }
        return out;
    }
    bool panduan(int x,int y) {
        return mark[x][y];

    }

};

int main()
{

    int w, h;
    cin >> w >> h;

    int** maze;
    maze = new int*[h];
        for (int i = 0; i < h; i++)
        {
            maze[i] = new int[w];
        }
    for (int i = 0; i < h; i++)
    {
        for (int j = 0; j < w; j++)
        {
            cin >> maze[i][j];
        }
    }
    S s(maze, w, h);
    s.get_orginal();
    s.seekpath(s.ox, s.oy);
    for(int i =0;i<h;i++)
    {
        delete[] maze[i];
    
    }
    delete[] maze;
    return 0;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-20 12:44:30  更:2021-10-20 12:46:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:31:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码