zoukankan      html  css  js  c++  java
  • 广度优先遍历

    在广度优先遍历中,需要运用到队列,在队列中,才能更快更方便的实现将每一个的可能性遍历到。

    下面是一段广搜的模板

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    using namespace std;
    struct node
    {
        int n,num;
    }cur,nexxt;
    queue<node>qu;
    int main()
    {
        int n,k,mark[105000],mark1,ans;
        while(~scanf("%d%d",&n,&k))
        {
            if(n==k)
            {
                printf("0 ");
                continue;
            }
            mark1=0;
            memset(mark,0,sizeof(mark));
            while(!qu.empty())
            {
                qu.pop();  //队列清零
            }
            cur.n=n;
            cur.num=0;
            qu.push(cur);
            mark[n]=1;
            while(!qu.empty())
            {
                cur=qu.front();
                qu.pop();
                for(int i=0;i<=2;i++)
                {
                    if(i==0)
                    nexxt.n=cur.n+1;
                    else if(i==1)
                    nexxt.n=cur.n-1;
                    else if(i==2)
                    nexxt.n=cur.n*2;
                    nexxt.num=cur.num+1;
                    if(nexxt.n<0||nexxt.n>100000) continue;
                    if(mark[nexxt.n]==1) continue;
                    if(nexxt.n==k)
                    {
                        mark1=1;
                        ans=nexxt.num;
                        break;
                    }
                    mark[nexxt.n]=1;
                    qu.push(nexxt);
                }
                if(mark1)
                break;
            }
            printf("%d ",ans);
        }
        return 0;
    }

  • 相关阅读:
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/6480763.html
Copyright © 2011-2022 走看看