题目:
代码:
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
char mp[31][51]; //稍微开大一点
char k[4]={'D','L','R','U'}; //按字典序记录路径
int dirx[]={1,0,0,-1},diry[]={0,-1,1,0};
int vis[30][50]; //以前用st数组标记
struct node
{int x,y; string path;
}; //这里一定要打分号。
//struct node<queue> q; 乌鱼子这个写错了
queue<struct node>q;
void bfs()
{struct node start;struct node now;struct node next;start.x=0,start.y=0;start.path="";vis[0][0]=1;q.push(start);/*for(int i=0;i<4;i++){}*/while(!q.empty()){now=q.front();q.pop();if(now.x==29&&now.y==49){cout<<now.path; //别忘了returnreturn; }for(int i=0;i<4;i++){next.x=now.x+dirx[i];next.y=now.y+diry[i];if(next.x<0||next.x>=30||next.y<0||next.y>=50)continue;if(vis[next.x][next.y]==1||mp[next.x][next.y]=='1') //不要忘记屏障这个条件 continue;vis[next.x][next.y]=1;next.path=now.path+k[i]; //Path一定要放在push前面 q.push(next);//path+=k[i];}}}int main()
{for(int i=0;i<30;i++)for (int j=0;j<50;j++)cin>>mp[i][j];bfs();return 0; }