zoukankan      html  css  js  c++  java
  • 迷宫问题

    题意:给出一个5*5的迷宫图,打印从(0,0)到(4,4)的路径。

    分析:基础dfs,注意记录路径。

    #include <iostream>
    #include <string>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #define range(i,a,b) for(int i=a;i<=b;++i)
    #define LL long long
    #define rerange(i,a,b) for(int i=a;i>=b;--i)
    #define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
    using namespace std;
    int map[5][5],id[5][5],dx[4]={1,-1,0,0},dy[4]={0,0,-1,1};
    struct node{
        int x,y,step;
        queue<int>p;
        node(bool flag=false){if(flag){x=y=step=0;p.push(0),p.push(0);}}
    };
    void init(){
        range(i,0,4)range(j,0,4)cin>>map[i][j];
    }
    bool judge(int x,int y){
        if(x<0||y<0||x>5||y>5)return false;
        else return true;
    }//判断边界
    void solve(){
        fill(id,0);
        queue<node>q;
        id[0][0]=1;
        q.push(node(true));
        while(!q.empty()){
            node t1=q.front();
            q.pop();
            if(t1.x==4&&t1.y==4)
                while(!t1.p.empty()){
                    int x=t1.p.front();
                    t1.p.pop();
                    int y=t1.p.front();
                    t1.p.pop();
                    cout<<"("<<x<<", "<<y<<")"<<endl;
                }
            range(i,0,3){
                node t2=t1;
                t2.x+=dx[i];
                t2.y+=dy[i];
                if(!id[t2.x][t2.y]&&judge(t2.x,t2.y)&&!map[t2.x][t2.y]){
                    t2.p.push(t2.x);
                    t2.p.push(t2.y);
                    t2.step++;
                    id[t2.x][t2.y]=1;
                    q.push(t2);
                }
            }
        }
    }
    int main() {
        init();
        solve();
        return 0;
    }
    View Code
  • 相关阅读:
    美团面试准备
    SSM实战项目——Java高并发秒杀API
    接口和抽象类有什么区别
    Java中static、final、static final的区别
    多线程面试题
    idea新建maven项目没有src目录
    聊聊MyBatis缓存机制
    Java 8系列之重新认识HashMap
    数据库SQL实战练习
    牛客网刷题(一)
  • 原文地址:https://www.cnblogs.com/Rhythm-/p/9323429.html
Copyright © 2011-2022 走看看