poj3278(BFS)

作者: 42fighting | 来源:发表于2018-01-25 15:32 被阅读0次

kuangbin带你飞专题:poj3278
题目含义:给你N,M,用N-1,N+1,N2的三种方式找出经过若干次跳跃变为M的最小次数。例如5->17,如图。

讨论
经过四次即可。
题解:通过bfs将N-1,N+1,2
N,作为N的子节点依次进入队列即可,最先找到的节点即为答案,解答树如下。
解答树
ac代码:
#include <cstdio>
#include <iostream>
#include <queue>
#include <string.h>
using namespace std;
int N, M;
const int maxn=200000;
int dis[maxn];
int vis[maxn];
int bfs()
{
    queue<int> que;
    que.push(N);
    vis[N]=1;
    if(N==M)return 0;
    while(!que.empty())
    {
        int x=que.front();
        que.pop();
        int nx=x+1, ny=x*2, nz=x-1;
        if(nx==M||ny==M||nz==M)
        return dis[x]+1;
        else {
            if(nx<=2*max(M, N)&&nx>=0&&!vis[nx])
            {
                vis[nx]=1;
                que.push(nx);
                dis[nx]=dis[x]+1;
            }
            if(ny<=2*max(M, N)&&ny>=0&&!vis[ny])
            {
                vis[ny]=1;
                que.push(ny);
                dis[ny]=dis[x]+1;
            }
            if(nz<=2*max(M, N)&&nz>=0&&!vis[nz])
            {
                vis[nz]=1;
                que.push(nz);
                dis[nz]=dis[x]+1;
            }
        }
    }
    return -1;
}
int main(void)
{
    while(scanf("%d%d", &N, &M)!=EOF)
    {
        memset(vis, 0, sizeof(vis));
        memset(dis, 0, sizeof(dis));
        int res=bfs();
        printf("%d\n", res);
    }
    return 0;
}

相关文章

  • poj3278(BFS)

    kuangbin带你飞专题:poj3278题目含义:给你N,M,用N-1,N+1,N2的三种方式找出经过若干次跳跃...

  • 走迷宫(BFS例题)

    BFS例题---走迷宫 BFS对应数据结构queue BFS算法时间复杂度O(n^2) BFS算法不走走过的点 的...

  • 什么时候用BFS,什么时候用DFS

    参考什么时候用dfs,什么时候用bfs 参考什么时候用DFS,什么时候用BFS? BFS的缺点适用情况 BFS的一...

  • Binary Tree(2)

    BFS vs DFS for Binary Tree What are BFS and DFS for Binar...

  • BFS/DFS python模板与实现

    BFS BFS在搜索完第k层的节点之前,是不会搜索第k+1层的节点的。 BFS原理 BFS所用的是队列。把每个还没...

  • Chapter12—搜索—广搜

    1. 题目列表 POJ3126(BFS) POJ3087(BFS) POJ3414(BFS+路径打印) 2. 广搜...

  • BFS及其应用

    内容概要: BFS类的实现 BFS求解连通分量 BFS求解无向图点对之间的一条最短路径 BFS判定无环图和二分图 ...

  • 8.19 - hard - 64

    317 . Shortest Distance from All Buildings 典型的BFS的题目,BFS可...

  • H - 8 HDU - 1495

    BFS

  • BFS与DFS总结

    BFS判断连通性 DFS判断连通性 BFS最优解(不走重复路径) BFS最优解(走重复路径) DFS回溯(不走重复...

网友评论

    本文标题:poj3278(BFS)

    本文链接:https://www.haomeiwen.com/subject/qrpvaxtx.html