K12教育赛事综合服务平台
聚乐之家官方网站
下载聚乐之家官方App
专注青少年竞赛题库网站
已知迷宫中最多存在6种不同的钥匙(对应编号0~5),同种钥匙有多把时只需收集一次即可打开所有对应类型的门,只有持有对应类型钥匙才能通过对应门,求起点到终点的最短移动步数。
记录访问状态的vis数组只需开2维,分别记录当前坐标的行和列即可,无需额外维度
我们可以用一个6位的二进制整数表示当前持有的钥匙集合,第k位为1代表已持有编号为k的钥匙,总共有2^6=64种不同的钥匙状态
状压BFS无法保证得到的路径是最短路径,需要改用深度优先搜索遍历所有可能的路径才能得到最优解
遇到门时,不管当前持有钥匙状态如何,都可以直接将该位置的状态加入队列