- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <queue>
- #include <stack>
- using namespace std;
- int N, K;
- int vis[100010];
- struct node {
- int pos;
- int minute;
- };
- int bfs();
- int main()
- {
- // freopen("in.txt", "r", stdin);
- // freopen("out.txt", "w", stdout);
- cin>>N>>K;
- memset(vis, 0, sizeof(vis));
- cout<<bfs()<<endl;
- return 0;
- }
- int bfs()
- {
- queue<node>Queue;
- node Node;
- Node.pos = N;
- Node.minute = 0;
- vis[Node.pos] = 1;
- Queue.push(Node);
- while (!Queue.empty()) {
- int x = Queue.front().pos;
- int y = Queue.front().minute;
- // cout<<x<<endl;
- Queue.pop();
- if (x == K) {
- return y;
- }
- if (x-1>=0 && (!vis[x-1])) {
- vis[x-1] = 1;
- Node.pos = x-1;
- Node.minute = y+1;
- Queue.push(Node);
- }
- if (x+1<=100000 && (!vis[x+1])) {
- vis[x+1] = 1;
- Node.pos = x+1;
- Node.minute = y+1;
- Queue.push(Node);
- }
- if (x*2<=100000 && (!vis[x*2])) {
- vis[x*2] = 1;
- Node.pos = x*2;
- Node.minute = y+1;
- Queue.push(Node);
- }
- }
- return 0;
- }
bfs
最新推荐文章于 2025-02-09 11:21:10 发布
本文介绍了一个使用广度优先搜索(BFS)算法解决寻找迷路兄弟问题的C++实现案例。该算法在一个整数线上寻找从起点N到达终点K所需的最短时间。通过队列来管理待搜索的状态,每次扩展当前位置的三种可能状态:向左移动一步、向右移动一步和跳跃到当前位置的两倍位置。
2173

被折叠的 条评论
为什么被折叠?



