题目链接
解题方法:BFS
题目分析
题目大意
FJ丢了头牛,现在FJ在N点,牛在K点,FJ有以下两种移动方式:
- 一次向左或向右移动一格
- 从x点移动到2*x点
耗时均为1min,问牛不动,FJ从N到K点最少需要多久。
解析
对于FJ所在的每个点有三种操作:向左,向右,加倍。如果FJ的坐标大于牛的坐标了,那么他也没有必要往右了,可以进行一个剪枝操作。对于每个点,他下一步能移动到的点的最短距离为该点加1,然后将这个点push进队列。一旦找到了b点,就结束BFS。
代码
1 |
|
Pursue excellence; Strive for perfection.
解题方法:BFS
FJ丢了头牛,现在FJ在N点,牛在K点,FJ有以下两种移动方式:
对于FJ所在的每个点有三种操作:向左,向右,加倍。如果FJ的坐标大于牛的坐标了,那么他也没有必要往右了,可以进行一个剪枝操作。对于每个点,他下一步能移动到的点的最短距离为该点加1,然后将这个点push进队列。一旦找到了b点,就结束BFS。
1 | #include <set> |