问题 R: 胜利大逃亡(HUST)

复制代码
#include <deque>
#define inf 200000
#include<iostream>
#include<queue>
using namespace std;

// 迷宫坐标
int map[59][59][59] = { 0 };

// 可访问标记
int visit[51][51][51] = { 0 };	

// 移动方式
int next1[7][4] = { {1,0,0},{-1,0,0}
				,  {0,1,0},{0,-1,0}
				,  {0,0,1},{0,0,-1} };

// 声明迷宫大小,及时间
int x = 0, y = 0, z = 0, T = 0;

// 判断能否逃出迷宫
int f = 0;

// bfs
void bfs();
struct node {
	int x;
	int y;
	int z;
	int val;
};
int main()
{

	int k = 0; scanf("%d", &k);
	while (k--)
	{
		// 输入 x高, y长 ,z长
		scanf("%d %d %d %d", &x, &y, &z, &T);

		// 输入立体迷宫
		for (int x1 = 0; x1 < x; x1++)
		{
			for (int y1 = 0; y1 < y; y1++)
			{
				for (int z1 = 0; z1 < z; z1++)
				{	visit[x1][y1][z1] = 0;
					scanf("%d", &map[x1][y1][z1]);}
			}
		}
		// 队列bfs
		bfs();		
	}
	return 0;
}
void bfs()
{
		queue<node> arr;
		node fir{ 0,0,0,0 };
		arr.push(fir);

		int ex = x - 1, ey = y - 1, ez = z - 1;

		visit[0][0][0] = 1;
		int node1 = 1, k = 0;
		
		while (!arr.empty())
		{
			int num = 0;
			if (arr.front().x == ex && arr.front().y == ey && arr.front().z == ez)
			{
				if (arr.front().val <= T)
					cout << arr.front().val << endl;
				else
					cout << -1 << endl;
				return;
			}
			for (int i = 0; i < 6; i++)
			{
				node temp{};
				int tx = arr.front().x + next1[i][0],
					ty = arr.front().y + next1[i][1],
					tz = arr.front().z + next1[i][2];
				// 下标在数组范围内
				// 迷宫中为路
				// 未标记过的有效点
				if (visit[tx][ty][tz] == 0
					&& tx < x && tx >= 0
					&& ty < y && ty >= 0
					&& tz < z && tz >= 0
					&& map[tx][ty][tz] == 0)
				{
					temp.x = tx;
					temp.y = ty;
					temp.z = tz;

					// 更新最短路(以上一级为参考)
					temp.val = arr.front().val + 1;

					// 不是目标,进行标记
					visit[tx][ty][tz] = 1;

					//加入有效点
					arr.push(temp);
				}
			}
			// 弹出队列首元素
			arr.pop();
		}
		cout << -1 << endl;
		return;
}
相关推荐
CoovallyAIHub11 小时前
语音AI Agent编排框架!Pipecat斩获10K+ Star,60+集成开箱即用,亚秒级对话延迟接近真人反应速度!
深度学习·算法·计算机视觉
NineData12 小时前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
木心月转码ing13 小时前
Hot100-Day14-T33搜索旋转排序数组
算法
会员源码网15 小时前
内存泄漏(如未关闭流、缓存无限增长)
算法
颜酱16 小时前
从0到1实现LFU缓存:思路拆解+代码落地
javascript·后端·算法
颜酱17 小时前
从0到1实现LRU缓存:思路拆解+代码落地
javascript·后端·算法
CoovallyAIHub1 天前
Moonshine:比 Whisper 快 100 倍的端侧语音识别神器,Star 6.6K!
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
速度暴涨10倍、成本暴降6倍!Mercury 2用扩散取代自回归,重新定义LLM推理速度
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
实时视觉AI智能体框架来了!Vision Agents 狂揽7K Star,延迟低至30ms,YOLO+Gemini实时联动!
算法·架构·github