K12教育赛事综合服务平台
聚乐之家官方网站
下载聚乐之家官方App
专注青少年竞赛题库网站
已知网格大小为m*n,每个格子可能是空地、墙、门(对应a-f共6种)、钥匙(对应A-F共6种),持有对应钥匙才能通过对应门,求从起点到终点的最短步数。
状态只需记录当前坐标(x,y),visited数组大小设为m*n即可
可以用一个6位二进制数表示钥匙持有状态,每个bit位为1代表持有对应钥匙,完整状态为(x,y,mask),visited数组大小设为mn(1<<6)即可
状压BFS中可以优先遍历深度更大的节点,保证首次到达终点时的步数就是最短路径
当我们在某个格子捡到新钥匙时,无需更新mask状态,可直接沿用之前的状态继续遍历