【BFS】大胖子走迷宫
题目
2548. 大胖子走迷宫 - AcWing题库
解释
- 纯纯使用bfs来判断
- 与一般bfs不同的是,增加了时间维度
- 当时间小于2*k时
- 我们首先进行两种选择
- 一个是原地等待,一个是前进
- 当时间大于2*k时
- 只管前进即可
- 一个细节点在于
- 体型的变化在胖子移动后才发生
- 因此check判断时,胖子的体型还是移动前的体型,即t.time
#include<bits/stdc++.h>
using namespace std;
const int N=330;
char g[N][N];
bool st[N][N];
int n,k;
struct state
{int x;int y;int time;
};
bool check(int x,int y,int nowtime)
{int m=0;if(nowtime<k)m=2;else if(nowtime >=2*k)m=0;else m=1;if(st[x][y])return false;for(int i=x-m;i<=x+m;i++){for(int j=y-m;j<=y+m;j++)if(g[i][j]!='+')return false;}return true;
}
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
int bfs()
{queue<state>q;q.push({3,3,0});st[3][3]=true;while(q.size()){auto t=q.front();q.pop();if(t.time<2*k)q.push({t.x,t.y,t.time+1});for(int i=0;i<4;i++){int xx=t.x+dx[i],yy=t.y+dy[i];if(!check(xx,yy,t.time))continue;q.push({xx,yy,t.time+1});st[xx][yy]=true;if(xx==n-2&&yy==n-2)return t.time+1;}}}
int main()
{cin >> n >> k;for (int i = 1; i <= n; i++)for(int j=1;j<=n;j++)cin >> g[i][j];cout << bfs() << endl;}
【BFS】大胖子走迷宫相关推荐
- 【含泪总结】大胖子走迷宫(bfs+读懂题意)
2548. 大胖子走迷宫 小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1×1 的面积,小明要占用 5×5 的面积. 由于小明太胖了,所以他行动起来很不方便. 当玩一些游戏时,小明相比小伙伴就 ...
- 刷题 BFS 广度优先算法 : 大胖子走迷宫 (python, java)
刷题 BFS 广度优先算法 : 大胖子走迷宫 (python, java) https://www.lanqiao.cn/problems/234/learning/ http://lx.lanqia ...
- 蓝桥杯国赛-大胖子走迷宫
广度优先搜索,见注释 五个状态:上下左右停 题目提交 import java.util.ArrayDeque; import java.util.Queue; import java.util.Sca ...
- Java B组蓝桥杯第十届国赛:大胖子走迷宫
试题 H: 大胖子走迷宫 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分 [问题描述] 小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1 × 1 的面积, 小明要占用 5 ...
- 2019年第十一届蓝桥杯国赛JavaB组第H题——“大胖子走迷宫”题目及解析
测试样例 Input: 9 5 +++++++++ +++++++++ +++++++++ +++++++++ +++++++++ ***+***** +++++++++ +++++++++ ++++ ...
- 蓝桥杯_大胖子走迷宫
题目描述 小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1×11×1 的面积,小明要占用 5×55×5 的面积. 由于小明太胖了,所以他行动起来很不方便.当玩一些游戏时,小明相比小伙伴就吃亏很 ...
- 2548. 大胖子走迷宫 (时间bfs)
小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1×1 的面积,小明要占用 5×5 的面积. 由于小明太胖了,所以他行动起来很不方便. 当玩一些游戏时,小明相比小伙伴就吃亏很多. 小明的朋友们制 ...
- 第十届蓝桥杯(国赛)——大胖子走迷宫
题目描述 小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1×11 × 11×1 的面积,小明要占用 5×55 × 55×5 的面积. 由于小明太胖了,所以他行动起来很不方便.当玩一些游戏时,小 ...
- 大胖子走迷宫(蓝桥杯真题)
小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1×11×1 的面积,小明要占用 5×55×5 的面积. 由于小明太胖了,所以他行动起来很不方便. 当玩一些游戏时,小明相比小伙伴就吃亏很多. 小 ...
最新文章
- android 图片绑定按钮,Android编程实现给Button添加图片和文字的方法
- Android 友盟分享躺过的几个坑,大坑,坑爹啊
- WPF IP地址输入控件的实现
- 关于STM32 SPI NSS的讨论
- 输出对角线(输出格式控制)
- [蓝桥杯][2013年第四届真题]带分数
- 48个越吃越瘦的诀窍 - 生活至上,美容至尚!
- 《一天聊一个设计模式》 单例
- CVPR 2019 Oral 目标跟踪最强算法SiamRPN++开源实现
- php mysql odbc_使用PHP和MySQL专用接口以及ODBC接口
- C语言书籍推荐从入门到进阶再到封神全套(2021年整理)
- Java常用设计模式及应用场景介绍
- 如何设计一个好看的 404 错误页面 ?
- safari遮罩无效
- 操作系统学习笔记(五)---进程同步
- java实现单个或多个文件的压缩、解压缩 支持zip、rar等格式
- phoenix-5.1.2 Inconsistent namespace mapping properties. Cannot initiate connection as SYSTEM
- getsockopt
- vue3+ts+el-tabs+keep-alive
- BUUCTF_Crypto题目:rot