zoukankan      html  css  js  c++  java
  • 从队列操作到BFS

    先把如下代码熟悉,再学习BFS的框架

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int maxN=100;
     4 int que[maxN];//定义数组模拟队列 
     5 int f, r;//队首队尾信息 
     6 int n;//输入数据数量 
     7 
     8 int main()
     9 {
    10     f=r=1;//初始化,队列为空
    11     cin>>n;
    12     //cin>>que[r];//输入第一个数 
    13     //n=n-1;//剩下需要输入n-1个数 
    14     while(n--){
    15         cin>>que[r++];//不断队尾插入数据 
    16     }
    17     while(f<=r){//判断队列是否为空 
    18         int fn=que[f];//获取队首信息 
    19         cout<<fn<<endl;//队首信息操作 
    20         f++;//出队 
    21     }
    22     return 0;
    23  } 

    思考上述代码为什么会出现多输出一个0 ?如何修改?

    BFS框架,注意与上述代码进行对比

     1 void bfs()
     2 {
     3     f=r=1;//队列初始化为空 
     4     que[r]=初始状态 //队尾插入初始状态 
     5     while(f<=r){
     6         //当队列非空时做,其中f和r分别表示队列的头指针和尾指针 
     7         if(找到目标状态)
     8             做相应处理(如退出循环输出解、输出当前解、比较解的优劣)
     9         else{
    10             获取头结点信息; 
    11             拓展头结点; 
    12             if(拓展出当新结点没有出现过){
    13                 r++;
    14                 将新结点插到队尾; 
    15             } 
    16         } 
    17         f++;//取下一结点 
    18     }
    19 }
  • 相关阅读:
    C#-获取页面源代码
    C#-获取页面源代码
    C#-窗体移动
    C#-窗体移动
    C#-窗体鼠标穿透
    C#-窗体鼠标穿透
    C#-string生成图片
    C#-string生成图片
    C#-Stmp发邮件
    POJ-1611 The Suspects
  • 原文地址:https://www.cnblogs.com/tflsnoi/p/13767816.html
Copyright © 2011-2022 走看看