K12教育赛事综合服务平台
聚乐之家官方网站
下载聚乐之家官方App
专注青少年竞赛题库网站
已知迷宫规模为n*m(n,m ≤ 50),迷宫中共有k种不同的钥匙(k ≤ 10),走到钥匙格子可拾取对应类型的钥匙,门格子需要持有对应类型的钥匙才能通行,要求求解从起点到终点的最短步数。
访问标记数组仅需要设计为二维数组vis[n][m],记录每个坐标是否被访问过即可
由于k≤10,可使用int类型整数的低10位表示当前持有的钥匙集合,每一位对应一类钥匙是否持有,这是状态压缩的核心设计
BFS队列中仅需要存储当前所在的坐标(x,y),不需要存储当前的钥匙持有状态
访问标记数组的维度应为vis[k][n][m],总空间复杂度为O(knm)