第十届蓝桥杯 试题 E: 迷宫

第十届蓝桥杯 试题 E: 迷宫

#include<bits/stdc++.h>
using namespace std;
const int maxx=1005;
struct node{
	int x,y;
	string str;
	node(int _x,int _y,string _str){
		x=_x;
		y=_y;
		str=_str;
	}
};
queue<node>q;
int x[4]={1,0,0,-1};
int y[4]={0,-1,1,0};
int vis[maxx][maxx];
char a[maxx][maxx];
void bfs(){
	vis[1][1]=1;
	q.push(node(1,1,""));
	while(!q.empty()){
		node tmp1=q.front();
		q.pop();
		if(tmp1.x==30&&tmp1.y==50){
			cout<<vis[tmp1.x][tmp1.y]<<endl;
			cout<<tmp1.str;
			break;
		}
		for(int i=0;i<4;i++){
			int tx=tmp1.x+x[i];
			int ty=tmp1.y+y[i];
			if(tx>=1&&tx<=30&&ty>=1&&ty<=50&&
			a[tx][ty]=='0'&&!vis[tx][ty]){
				string s;
				if (i == 0){
				s = "D";
			    } else if(i == 1) {
				s = "L";
		    	} else if (i == 2) {
				s = "R";
		    	} else {
				s = "U";
                }
                vis[tx][ty]=vis[tm][ty]+1;
 //               tmp2.str+=s;
                q.push(node(tx,ty,tmp1.str+s));
			}
		}
	}
}
int main(){
	for(int i=1;i<=30;i++){
		for(int j=1;j<=50;j++){
			cin>>a[i][j];
		}
	}
	bfs();
	return 0;
} 
上一篇:confluence邮件服务器配置方法(踩坑)


下一篇:优先队列 - big先