豆包生成的三角洲行动迷宫题
2026-06-06 09:54:54
发布于:浙江
哈吉蜂混烟撤离
题目背景
你是一名哈吉蜂(蜂医),在航天基地行动时成功出了非洲之心与火箭燃料,却被驻守在此的单三威虫盯上。你需要利用地形、烟雾弹以及双层迷宫的地形优势,躲避威龙追击,在撤离区域停留足够时间完成撤离。
题目描述
地图为双层迷宫,分为 1 层、2 层,每层均为
n行 m列。
“.” 代表空地,可正常行走;“# ”代表障碍物,无法通行。
仅坐标
(2,3)
、
(4,5)
两个位置可在 1 层与 2 层之间往返,跨层移动耗时 1 秒。
1 层的威龙无法攻击、侦测到 2 层区域。
角色移动规则
你的角色每秒必须移动一格,可向上下左右四个方向行走,禁止原地停留。
仅在指定点位可跨层,其余位置无法切换楼层。
烟雾弹规则
烟雾为单列连续 3 格区域,可布置在 1 层或 2 层。
角色可进入烟雾区域,烟雾能完全阻挡威龙的视线。
烟雾存在时长固定为 3 秒,超时后自动消失。
威龙规则
威龙始终在1 层活动,不会前往 2 层;初始位置为 1 层撤离点。
威龙每秒会尝试向你的方向移动一格,若目标位置是障碍物或超出地图边界,则随机选择其他可行方向;四周均无法移动时则原地停留。
以威龙当前位置为中心,存在2×2 索敌范围。若你进入该范围,且未被烟雾遮挡视线,会直接被发现,撤离失败。
撤离判定规则
撤离点位于 1 层,以撤离点为中心的3×3 区域为有效撤离范围。
特殊点位:2 层的
(2,2)
、
(2,4)
两个位置,视同处于撤离有效范围内。
撤离要求:你需要持续停留在撤离有效范围内满 3 秒,期间全程不被威龙侦测到,即可成功撤离。
输入格式
第一行输入两个整数
n,m
,分别代表单层迷宫的行数、列数。
第二行依次输入六个整数:
layer_s,sx,sy,layer_f,fx,fy
。
layer_s,sx,sy
:你的初始楼层、初始坐标(坐标从 1 开始计数)。
layer_f,fx,fy
:撤离点所在楼层、撤离点坐标(本题撤离点固定在 1 层)。
接下来依次输入1 层迷宫、2 层迷宫:每层共
n
行,每行
m
个字符,描述当前楼层地形。
输出格式
若可以成功安全撤离,输出 YES;否则输出 NO。
样例输入
5 5
1 1 1 1 3 3
.....
.#...
.....
...#.
.....
#####
.#.#.
.....
#...#
#####
样例输出
YES
补充说明
所有坐标、楼层编号均从 1 开始。
每一秒的执行顺序:角色移动 → 威龙移动 → 烟雾计时刷新 → 索敌 & 撤离状态判定。
撤离计时仅在角色处于有效撤离范围且未被侦测时累计,中断后计时清零。

豆包神力!发力!
全部评论 1
- 置顶
看一下,这样对吗?
#include <bits/stdc++.h> using namespace std; int n,m; int sx,sy,fx,fy; char a[45][45]; int vis[45][45]; bool ok=false; int dx[] ={-1,1,0,0}; int dy[] = {0,0,-1,1}; void dfs(int x,int y){ if(x == fx && y==fy){ ok = true; return; } for (int i=0;i<4;i++){ int nx = x+dx[i]; int ny = y+dy[i]; if(nx >= 1 && nx <= n && ny >= 1 && ny <= m&& a[nx][ny] == '.' && vis[nx][ny] == 0){ vis[nx][ny] = 1; dfs(nx, ny); vis[nx][ny] = 0; } } } int main(){ cin >>n>>m; cin >>sx>>sy>>fx>>fy; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin >>a[i][j]; } }vis[sx][sy]=1; dfs(sx,sy); if(ok==true){ cout<<"YES"; }else{ cout <<"NO"; } return 0; }2026-05-31 来自 浙江
1



















有帮助,赞一个