蓝桥杯-学霸的迷宫(BFS+记录操作)
接下来n行,每行m个数,数之间没有间隔,为0或1中的一个。0表示这个格子可以通过,1表示不可以。假设你现在已经在迷宫坐标(1,1)的地方,即左上角,迷宫的出口在(n,m)。每次移动时只能向上下左右4个方向移动到另外一个可以通过的格子里,每次移动算一步。数据保证(1,1),(n,m)可以通过。
第二行K个字符,每个字符∈{U,D,L,R},分别表示上下左右。如果有多条长度相同的最短路径,选择在此表示方法下字典序最小的一个。
3 3
001
100
110
Input Sample 2:
3 3
000
000
000
4
RDRD
Output Sample 2:
4
DDRR
有50%的数据满足:1<=n,m<=50
有100%的数据满足:1<=n,m<=500。
看注释就能明白了,顺带一提,因为头文件原因,如果全局变量中命名为map会导致错误,可以使用mapp来避免
node中的far是指向父亲的值,因为要打印移动的路径,因此必须记录
#include<bits/stdc++.h>
using namespace std;
/*PearFL*/
struct node{
	int x;
	int y;
	int cnt;//记录当前已行走数
	int dir;//记录到达此位置走的方向
	int far;//记录父亲的值 
}que[2501];
int next[4][3] = {
    {-1, 0, 'U'},//上U
    {1, 0, 'D'},//下D
    {0, -1, 'L'},//左L
    {0, 1, 'R'}//右R
};
char mapp[501][501],path[2500]="";
int book[501][501] = {0};
int n,m,head = 1,tail = 1,flag = 0,tx,ty,i,j;
int main()
{
	scanf("%d %d", &n, &m);
	for(i = 0; i < n; i++){
        scanf("%s", mapp[i]);
    }
	que[tail].x = 1;
    que[tail].y = 1;
    que[tail].cnt = 0;
    que[tail].far = 0;
    tail++;
    book[1][1] = 1;  
    while(head < tail){
        if(flag){
            break;
        }  
        for(i = 0; i < 4; i++){
            tx = que[head].x + next[i][0];
            ty = que[head].y + next[i][1];  
            if(tx < 1 || ty < 1 || tx > n || ty > m){
                continue;
            }             
            if(book[tx][ty] == 0 && mapp[tx - 1][ty - 1] == '0'){
                book[tx][ty] = 1;
                que[tail].x = tx;
                que[tail].y = ty;
                que[tail].cnt = que[head].cnt + 1;
                que[tail].dir = next[i][2];
                que[tail].far = head;
                tail++;
            }  
            if(tx == n && ty == m){
                flag = 1;
                break;
            }
        }
        head++;
    }    
	i = tail - 1;
    j = 0;
    while(que[i].far != 0){
        path[j++] = que[i].dir;
        i = que[i].far;
    }  
    //输出结果
    printf("%d\n", que[tail - 1].cnt);
    for(j--; j >= 0; j--){
        printf("%c", path[j]);
    }
	return 0;
} 蓝桥杯-学霸的迷宫(BFS+记录操作)的更多相关文章
- 蓝桥杯---剪格子(DFS&BFS)(小总结)
		问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+ ... 
- 2019年第十届蓝桥杯省赛-迷宫(BFS/Excel大法)
		这题用dfs搜不出来,需要使用bfs并记录路径,设置好方向顺序跑就ok 正解类似:POJ-3984 迷宫问题 然而毕竟是暴力杯,我们的原则是代码能省就省(懒癌晚期 于是乎网上便出现了形形色色的题解,笔 ... 
- 第十届蓝桥杯 试题 E: 迷宫
		试题 E: 迷宫 本题总分:15 分 [问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方. 010000 000100 001001 110000 迷 ... 
- 蓝桥杯九宫重排(bfs+用set去重)
		题目连接 #define _CRT_SECURE_NO_WARNINGS #include<cstdio> #include<iostream> #include<que ... 
- 蓝桥杯  跳蚱蜢 (bfs)
		转载自:https://blog.csdn.net/wayway0554/article/details/79715658 本题的解题关键就在于将蚱蜢在跳转换为盘子在跳. 当使用string当做每一个 ... 
- 2019第十届蓝桥杯 E题 迷宫
		/*输入 30 50 01010101001011001001010110010110100100001000101010 00001000100000101010010000100000001001 ... 
- [蓝桥杯2017初赛]迷宫 DFS
		题目描述 X星球的一处迷宫游乐场建在某个小山坡上.它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母.我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间,R表示走到右边 ... 
- 蓝桥杯2019初赛]迷宫(dfs版本)
		传送门 大意: 题目的意思还是模板的搜索,不同的是我们要记录路径了,而且是最短字典序最小的路径. 思路: 1.对于字典序最小,也就是说我们要尽量先往下走,然后是左- 这个很简单,因为在dfs中是顺序枚 ... 
- 蓝桥杯 历届试题 九宫重排 (bfs+康托展开去重优化)
		Description 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的 ... 
随机推荐
- mongo学习-group操作以及java代码
			原数据: /* 1 */ { "_id" : ObjectId("552a330e05c27486b9b9b650"), "_class" ... 
- HAService 刨坑
			High availability is a characteristic of a system, which describes the duration (length of time) for ... 
- JavaScript语言精粹 笔记06 方法
			JS包含了少量可用在标准类型上的标准方法. ArrayFunctionNumberObjectRegExpString Array array.concat(item...) concat方法返回一个 ... 
- 使用Intel的FPGA电源设计FPGA 供电的常用反馈电阻阻值
			使用Intel的FPGA电源设计FPGA 供电的常用反馈电阻阻值. 当前仅总结使用EN5339芯片的方案 Vout = Ra*0.6/Rb + 0.6 芯片手册推荐Ra取348K,则 3.3V时,取R ... 
- 解决部分版本kali升级后w3af无法运行的问题
			1,w3af简介 w3af是一个Web应用程序攻击和检查框架.该项目已超过130个插件,其中包括检查网站爬虫,SQL注入(SQL Injection),跨站(XSS),本地文件包含(LFI),远程文件 ... 
- 使用google chrome抓取数据:抓取全国的高中的数据
			http://tomycat.github.io/blog/other/2014/05/28/use-google-chrome-capture-data.html 
- testNG的高级用法 --DataProvider
			@DataProvider Method参数 数据提供者的第一个参数是java.lang.reflect.Method,TestNG传递这个将调用的测试方法.如果您希望数据提供者根据不同的测试方法返回 ... 
- SQL SERVER 查找锁信息
			通过系统的存储过程 sp_who 或 sp_who2 可以查找出所有的锁信息, 但是看不出是哪个表, 什么语句 当使用 sp_who 或 sp_who2 查找锁信息的时候, 有个 spid 信息, ... 
- PostgreSQL创建表及约束
			创建表 语法: create table table_name ( column_name type column_constraint, table_constraint table_constra ... 
- asp.net mvc 上传图片 摘自mvc  高级编程第311页
			Image Uploads I am going to complete the SportsStore user experience with something a little more so ... 
