zoukankan      html  css  js  c++  java
  • 老鼠走迷宫

    #include <iostream>
    #include <time.h>
    #include <stack>
    using namespace std;
    
    int MG[7][7]={{2,2,2,2,2,2,2}, 
    {2,0,0,0,0,0,2}, 
    {2,0,2,0,2,0,2}, 
    {2,0,0,2,0,2,2}, 
    {2,2,0,2,0,2,2}, 
    {2,0,0,0,0,0,2}, 
    {2,2,2,2,2,2,2}};
    
    void printMG()
    {
        for (int i = 0;i <= 6;i++)
        {
            for(int j = 0;j <= 6;j++)
            {
                cout<<MG[i][j]<<" ";
            }
            cout<<endl;
        }
    }
    //全局变量
    stack<int> LJ;//定义一个栈,用于保存路径
    int SPosit[2] = {1,1};//入口位置
    int EPosit[2] = {5,5};//出口位置
    bool state = false;//当前状态,表示是否已经成功
    //检查当前位置是否有效
    bool check(int x,int y)
    {
        if (MG[x][y] == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    
    void move(int x,int y)
    {
        //将当前点入栈
        LJ.push(x);LJ.push(y);
        MG[x][y] = 1;
        if (!state)
        {
            cout<<"当前位置为("<<x<<","<<y<<")"<<endl;
        }
        if (x == EPosit[0] && y == EPosit[1])
        {//到达出口,输出保存路径
            state = true;
            cout<<"已经到达出口"<<endl;
            cout<<"下面是保存的路径(逆序输出)"<<endl;
            while (!(LJ.empty()))
            {
                cout<<"("<<LJ.top()<<",";
                LJ.pop();
                cout<<LJ.top()<<")"<<"   ";
                LJ.pop();
            }
            cout<<endl;
        }
        else
        {//四个方向上进行递归遍历
            if(check(x-1,y))
            {
                move(x-1,y);
            }
            if (check(x,y+1))
            {
                move(x,y+1);
            }
            if (check(x+1,y))
            {
                move(x+1,y);
            }
            if (check(x,y-1))
            {
                move(x,y-1);
            }
        }
        if (!state)
        {
            //如果在当前点上没有遍历到终点,设置该点位有效点,并且将该点从路径中出栈
            LJ.pop();LJ.pop();
            //MG[x][y] = 0;
        }
    }
    
    
    int main()
    {
        printMG();
        move(SPosit[0],SPosit[1]);
        system("pause");
        return 0;
     }
    迷宫问题

    问题描述:老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,
                采用一个栈来保存走过的路径,通过适当的入栈出栈,最终得到的就是有效的路径.本算法是一个经典的递归问题

  • 相关阅读:
    python——ddt + excel + HTMLTestRunner 实现接口测试
    APP模拟弱网环境测试教程
    静态语言与动态语言
    Charles手机抓包实用教程
    DS博客作业08--课程总结
    DS博客作业03--栈和队列
    DS博客作业02--线性表
    DS博客作业01--日期抽象数据类型设计与实现
    第四次作业
    C博客作业01--分支、顺序结构
  • 原文地址:https://www.cnblogs.com/color-my-life/p/3260927.html
Copyright © 2011-2022 走看看