第五题迷宫
Posted 猪八戒1.0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五题迷宫相关的知识,希望对你有一定的参考价值。
行列值与maze里的改一下就可
#include<bits/stdc++.h>
#include<queue>
#include<string>
using namespace std;
#define ROWS 4
#define COLS 6
string maze[ROWS+2]=
"010000",
"000100",
"001001",
"110000"
;
int dir[4][2]=1,0,0,-1,0,1,-1,0;//DLRU
char dirs[5]="DLRU";
struct node
int x,y; //行列
char pos; //方向
;
queue<node> Q;
int visited[ROWS+2][COLS+2]; //0表示未访问过
node father[ROWS+2][COLS+2]; //每个位置[x][y]的父节点father[x][y]
int in(int tx,int ty)
return tx>=0&&tx<ROWS&&ty>=0&&ty<COLS;
void dfs(int x,int y)
if(x==0&&y==0)
return;
else
dfs(father[x][y].x,father[x][y].y);
cout<<father[x][y].pos;
int main()
node start,now,next;
int i,tx,ty;
start.x=0,start.y=0;
Q.push(start);
visited[0][0]=1;
while(!Q.empty())
now=Q.front(); Q.pop();
if(now.x==ROWS-1&&now.y==COLS-1) break;
for(i=0;i<4;i++)
tx=now.x+dir[i][0];
ty=now.y+dir[i][1];
if(in(tx,ty)&&maze[tx][ty]=='0'&&visited[tx][ty]==0)
visited[tx][ty]=1;
father[tx][ty].x=now.x;
father[tx][ty].y=now.y;
father[tx][ty].pos=dirs[i];
next.x=tx;
next.y=ty;
Q.push(next);
dfs(ROWS-1,COLS-1);
return 0;
以上是关于第五题迷宫的主要内容,如果未能解决你的问题,请参考以下文章