思路:主要是不知道该如何存储路径,如下可以用一个struct,在造一个构造函数,这样用node(1,2,"abc")就相当于 node point; point.x=1; point.y=2; point.path="abc";
struct node{
int x,y;
string path;
node(int _x,int _y, string _path){
x=_x;
y=_y;
path=_path;
}
node() {} //可以直接初始化
};
AC code:
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#include<queue>
using namespace std;
struct node{
int x,y;
string path;
node(int _x,int _y, string _path){
x=_x;
y=_y;
path=_path;
}
node() {} //可以直接初始化
};
int dir[4][2]={1,0,0,-1,0,1,-1,0};
char ops[5]={'D','L','R','U'};
char mp[55][55];
bool vis[55][55];
string ans;
int n,m;
bool check(int x,int y){
if(mp[x][y]=='0'&&x>=0&&x<n&&y>=0&&y<m&&vis[x][y]==0) return true;
return false;
}
void bfs(){
queue<node>que;
que.push(node(0,0,""));
while(!que.empty()){
node point;
point=que.front();
que.pop();
int x=point.x;
int y=point.y;
string path=point.path;
for(int i=0;i<4;i++){
int nx=x+dir[i][0];
int ny=y+dir[i][1];
if(nx==n-1&&ny==m-1){
ans=path+ops[i];
return;
}
if(check(nx,ny)){
vis[nx][ny]=1;
que.push(node(nx,ny,path+ops[i]));
}
}
}
}
int main(){
n=30;m=50;
for(int i=0;i<n;i++){
cin>>mp[i];
}
bfs();
cout<<ans<<endl;
return 0;
}