zoukankan      html  css  js  c++  java
  • 广度优先(BFS) ------- 模板1:-----模板2:--------模板3:

    //使用数组queue[ ]存放结点队列
    void   BFS( ) 
    {   head=0; tail=1;  queue[head]=首结点的值;
         while (head<tail) //队列不空
         {    temp=tail;
              for (k=head; k<=tail; k++)  //对当前层扩展
              {      if  ( 到达目的状态 )    {      输出结果;   return;   }
                     for (i=1; i<=m; i++) //每个结点的m种扩展可能
                          if (可以扩展) 
                          {      处理每种可能情况; 
                                  queue[temp++]=扩展出的结点值;
                          } 
             }
             head=tail;   tail=temp;
    }
    View Code

    //使用数组queue[ ]存放结点队列
    void   BFS( )
    {   head=0; tail=1;  queue[head]=首结点的值;
         while (head<tail) //队列不空
         {    temp=tail;
              for (k=head; k<=tail; k++)  //对当前层扩展
              {      if  ( 到达目的状态 )    {      输出结果;   return;   }
                     for (i=1; i<=m; i++) //每个结点的m种扩展可能
                          if (可以扩展)
                          {      处理每种可能情况;
                                  queue[temp++]=扩展出的结点值;
                          }
             }
             head=tail;   tail=temp;
    }

    //使用数组queue[ ]存放结点队列
    void   BFS( ) 
    {    head=0; tail=1;  
         queue[head]=首结点的值;
         while (head<tail)   //队列不空
         {     if  ( 到达目的状态 )    {      输出结果;   break;   }
                head++;
               for (i=1; i<=m; i++) //结点head的m种扩展可能
                          if (可以扩展) 
                          {      处理每种可能情况; 
                                  queue[tail++]=扩展出的结点值;
                          } 
             }
    }
    View Code

    //使用数组queue[ ]存放结点队列
    void   BFS( )
    {    head=0; tail=1; 
         queue[head]=首结点的值;
         while (head<tail)   //队列不空
         {     if  ( 到达目的状态 )    {      输出结果;   break;   }
                head++;
               for (i=1; i<=m; i++) //结点head的m种扩展可能
                          if (可以扩展)
                          {      处理每种可能情况;
                                  queue[tail++]=扩展出的结点值;
                          }
             }
    }

    //使用STL中的队列
    void   BFS( ) 
    {   首结点入队列Q;
         while ( ! Q.empty() ) //队列不空
         {    temp=Q.front();    
              if  ( 到达目的状态 )     {      输出结果;   break;   } 
              Q.pop( );  
              for (i=1; i<=m; i++) //扩展结点temp的m种可能
                      if (可以扩展) 
                      {      处理每种可能情况; 
                             扩展出结点入队列;
                      } 
             }
    }
    View Code

    //使用STL中的队列
    void   BFS( )
    {   首结点入队列Q;
         while ( ! Q.empty() ) //队列不空
         {    temp=Q.front();   
              if  ( 到达目的状态 )     {      输出结果;   break;   }
              Q.pop( ); 
              for (i=1; i<=m; i++) //扩展结点temp的m种可能
                      if (可以扩展)
                      {      处理每种可能情况;
                             扩展出结点入队列;
                      }
             }
    }

  • 相关阅读:
    MicroPython实例之TurnipBit开发板自动浇水实验
    MicropPython的学习,如何从0到1?
    MicroPython最全资料免费获取
    MicroPython技术及应用前景
    如何将AD原理图直接转为Orcad原理图
    USB音频声卡的时钟同步方式----同步、异步、自适应
    字符串指针数组长度
    关于传统模拟电话按键时间
    小米笔记本13.3寸 八代i5独显 记录
    小米笔记本Air 13.3 熄屏 大概率无法唤醒问题(已解决)
  • 原文地址:https://www.cnblogs.com/2014acm/p/3888869.html
Copyright © 2011-2022 走看看