ACM学习心得(5)

广搜进阶:
双向广搜有确定的起点和终点,并且能把从起点到终点的单个搜索,变换为分别从起点出发和从终点出发的“相遇”问题,可以用双向广搜
可以合用一个队列 正向BFS和逆向BFS用同一个队列 适合正反2个BFS平衡的情况 正向搜索和逆向搜索交替进行 两个方向的搜索交替扩展子状态 先后入队 直到两个方向的搜索产生相同的子状态
也可以分成两个队列 正向BFS和逆向BFS的队列分开
hdu 1195 open the lock
打开密码锁。密码由四位数字组成,数字从1到9。可以在任何数字上加上1或减去1,当’9’加1时,数字变为’1’,而’1’减1时,数字变为’9’。相邻的数字可以交换。每个动作是一步。任务是使用最少的步骤来打开锁。注意:最左边的数字不是最右边的数字的邻居。

这个用双向广搜 即2个队列表
还要用到hash去重的方法 其实就是定一个去重数组 不是很复杂
这样的方法会比单向队列快很多

猜你喜欢

转载自blog.csdn.net/weixin_44120286/article/details/107294338