POJ 3278 Catch That Cow(BFS)

刚看了挑战程序设计竞赛上的搜索入门专题,做完书上走迷宫的问题正好来做这个不是很难(可能对大佬来说这都不叫题)的题,算是正式做的第二道广搜题吧,对搜索已经有了一定的理解,简单来说就是在现在这个位置,下一步应该往哪边走,把所有的方向都要列举出来。

下面是这个题的代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 100010;
int n,k,ans,step[maxn],vis[maxn];
int bfs()
{
    int que[maxn],frt = 0,til = 0;
    memset(que,0,sizeof(que));
    que[til++] = n;
    vis[n] = 1;
    while(frt != til)
    {
        int q = que[frt++];
        int next;
        for(int i = 0;i < 3; i++)
        {
            if(i == 0)
                next = q + 1;
            if(i == 1)
                next = q - 1;
            if(i == 2)
                next = 2 * q;
            if(next >= 0 && next < maxn && !vis[next])
            {
                que[til++] = next;
                vis[next] = 1;
                step[next] = step[q] + 1;
            }
            if(next == k)
                return step[next];
        }
    }
}
int main()
{
    scanf("%d %d",&n,&k);
    if(k <= n)
        printf("%d",n - k);
    else
        printf("%d",bfs());
    return 0;
}

PS:BFS入门题目,不过做出来也是很开心的,终于会用BFS了。

猜你喜欢

转载自blog.csdn.net/xiao__hei__hei/article/details/81742612