转载请注明本文地址http://blog.csdn.net/yangnanhai93/article/details/40718149

简单说说宽度优先搜索BFS

说实话,这是第一个自己写的宽度优先搜索的题目。之前也是不太明确之间的差别,好吧。仅仅能说自己学的太渣……

言归正传,对于刚開始学习的人来说,可能最大的概念就是一个是深度搜索,一个是宽度搜索,好吧。我表示废话了,我事实上就是这个样子的,然后一直不得甚解。

。。

所以第一次上来。我就直接搜索DFS。结果太明显,就是TLE或者MLE,然后就抓狂中。这可能是非常多刚開始学习的人在開始的时候犯的错误了。

我个人的感觉宽度搜索和深度搜索都是非常暴力的枚举,可是差别呢,还是比較明显的,就比方以下这两题来说,基本上的都是一样,通过题目的描写叙述,都是最快找到,在深度优先搜索中就是要找到全部能到达的最短路径了。所以。事实上应该说都可以找到的,仅仅是花费的时间不一样而已。

总结起来就是下面几点:

1:宽度优先搜索的用意一般都会比較明显。比方最小啊,就是有比較限制的时候,比較多的时候会用宽度优先,这个,能够用一个比喻来说,就是从一个点。滴墨水,看谁先到。这就是宽度,每做一步,墨水都会扩散。然后得到新的起始点,继续扩散,一个循环的过程。

2:深度优先的话,用于枚举多少类型的时候会比較多,非经常见的应用就是8皇后。N皇后的问题了

附上两题的题解

题目1365:贝多芬第九交响曲

题目链接地址http://ac.jobdu.com/problem.php?pid=1365

#include <stdio.h>
#include <queue>
#include <memory.h>
using namespace  std;struct Node
{int x, y,step;
};
bool A[101][101];
short testCase[8][2]={{-1,-2},{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2}};
int Cal(int x,int y,int ex,int ey,int num)
{if(x==ex&&y==ey)return 0 ;queue <Node> p;Node tmp,q;int result=0;tmp.x=x;tmp.y=y;tmp.step=0;p.push(tmp);while(p.size()>0){tmp=p.front();p.pop();for (int i=0;i<8;i++){q.x=tmp.x+testCase[i][0];q.y=tmp.y+testCase[i][1];if(q.x>0&&q.y<=num&&q.x<=num&&q.y>0&&!A[q.x][q.y]){q.step=tmp.step+1;A[q.x][q.y]=true;if(q.x==ex&&q.y==ey)return q.step;elsep.push(q);}}}return -1;
}int main()
{int num,x,y,ex,ey;//freopen("data.in","r",stdin);while(scanf("%d",&num)!=EOF){memset(A,0,sizeof(A));scanf("%d%d%d%d",&x,&y,&ex,&ey);printf("%d\n",Cal(x,y,ex,ey,num));}return 0;
}
/**************************************************************Problem: 1365User: vincent_ynhLanguage: C++Result: AcceptedTime:450 msMemory:1064 kb
****************************************************************/

九度 题目1335:闯迷宫

题目链接地址:http://ac.jobdu.com/problem.php?pid=1335

#include <stdio.h>
#include <memory.h>
#include <queue>
using namespace std;
//#define LOCAL
bool A[100][100];
struct Node
{int x,y,step;
};int Cal(int num)
{if(num==1)return 0;Node first,second;first.x=0;first.y=0;first.step=0;int testCase[4][2]={{1,0},{0,1},{-1,0},{0,-1}};queue<Node> result;result.push(first);while(result.size()>0){first=result.front();A[first.x][first.y]=true;result.pop();for (int i=0;i<4;i++){second.x=first.x+testCase[i][0];second.y=first.y+testCase[i][1];second.step=first.step+1;if(second.x>=0&&second.y<num&&second.x<num&&second.y>=0&&!A[second.x][second.y]){A[second.x][second.y]=true;if(second.x==num-1&&second.y==num-1)return second.step;elseresult.push(second);}}}return -1;
}
int main()
{int inf=10000;
#ifdef LOCALfreopen("data.in","r",stdin);freopen("data.out","w",stdout);
#endifint num;while(scanf("%d",&num)!=EOF){for(int i=0;i<num;i++)for(int j=0;j<num;j++){scanf("%d",&A[i][j]);}if(A[0][0]==false&&A[num-1][num-1]==false)printf("%d\n",Cal(num));elseprintf("-1\n");}return 0;
}
/**************************************************************Problem: 1335User: vincent_ynhLanguage: C++Result: AcceptedTime:100 msMemory:1064 kb
****************************************************************/

九度 题目1335:闯迷宫 题目1365:贝多芬第九交响曲相关推荐

  1. 九度 1365 贝多芬第九交响曲

    http://ac.jobdu.com/problem.php?id=1365 基本BFS,好像一个月没写题了... 写完这题继续看linux源码去.一定要坚持 1 #include <stdi ...

  2. 九度题库(所有题目整理,适合计算机考研和面试的人用)

    本来搜一道面试题,找到叫九度题库的地方,发现里面的题目都比较基础,很适合当面试题来练习. 于是,闲得蛋疼,把所有题目给爬下来了,并整理成markdown格式,然后export成pdf,方便大家离线阅读 ...

  3. 九度oj 题目1365:贝多芬第九交响曲

    现在在一块空的场地上会有一个大的二维棋盘,裁判会给你指定初始位置及一座贝多芬雕像所处的位置,你开始时就站在裁判指定的初始位置处,你的目标是跳到贝多芬雕像的位置.为了给比赛增加一定的难度,你在棋盘上行走 ...

  4. Piggy-Bank - 九度教程第 102 题

    Piggy-Bank - 九度教程第 102 题 题目 时间限制:1 秒 内存限制:32 兆 特殊判题:否 题目描述: Before ACM can do anything, a budget mus ...

  5. 质因数的个数 - 九度教程第54题

    质因数的个数 - 九度教程第54题 题目 时间限制:1 秒 内存限制:32 兆 特殊判题:否 题目描述: 求正整数 N(N>1)的质因数的个数. 相同的质因数需要重复计算.如 120=22235 ...

  6. 九度[1035]-找出直系亲属

    九度[1035]-找出直系亲属 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A, ...

  7. 九度oj 题目1335:闯迷宫

    题目描述: sun所在学校每年都要举行电脑节,今年电脑节有一个新的趣味比赛项目叫做闯迷宫. sun的室友在帮电脑节设计迷宫,所以室友就请sun帮忙计算下走出迷宫的最少步数. 知道了最少步数就可以辅助控 ...

  8. 题目1335:闯迷宫( BFS在求解最短路径或者最短步数上有很多的应用)

    题目描述: sun所在学校每年都要举行电脑节,今年电脑节有一个新的趣味比赛项目叫做闯迷宫. sun的室友在帮电脑节设计迷宫,所以室友就请sun帮忙计算下走出迷宫的最少步数. 知道了最少步数就可以辅助控 ...

  9. 九度OJ 题目1179:阶乘

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1179:阶乘 * 来源:http://ac.jo ...

最新文章

  1. 锐捷网络交换机配置命令大全
  2. usb深度检查 清理_巴南区清理化粪池工程队价格合理2020
  3. 【小夕精选】如何优雅而时髦的解决不均衡分类问题
  4. python选课系统作业_Python 大作业4:选课系统
  5. setIconImage(icon);设置JFrame窗口标题图标
  6. win7右键没有新建文件夹了
  7. 关于LIMIT(超出界限时,SQL执行也没有问题,而且结果集中只会到有数据的最后一条记录,不会出现空,已经过测试)
  8. Q106:Mac系统下安装编译PBRT-V3
  9. 递归下降分析法java_Atitit 表达式原理 语法分析 原理与实践 解析java的dsl  递归下降是现阶段主流的语法分析方法...
  10. 智能电子后视镜MFC01-LCD通用版 使用说明与简单故障排查
  11. 806管理学原理考研复习资料
  12. 曲终人散,我亦是行人。
  13. Beta周王者荣耀交流协会第一次Scrum会议
  14. Android 11 wifi adb 连接错误 “Unable to start pairing client.“
  15. (闪存)存储基础知识
  16. numpy 处理txt的简单样例
  17. 老黄历吉日吉时查询接口实现及代码示例
  18. Java8的stream处理List集合的相同部分(交集)、去重
  19. sfc /scannow扫描修复系统文件命令怎么用
  20. Vscode——调整左侧菜单字体大小

热门文章

  1. 大数据学习中虚拟机准备工作(centos基础配置)
  2. 入职阿里巴巴,成为年薪百万阿里P7高级架构师需要必备哪些技术栈
  3. python中对字符串进行左、中、右对齐操作
  4. 阿里云服务器安装jdk8版本
  5. VUEPC和手机屏幕适配
  6. html弹出层很字体模糊了,由CSS3 transform 字体模糊问题揭示出浏览器渲染机制
  7. 苹果电脑(mac)的快捷键大全
  8. scratch节假日课程:元旦贺卡的制作
  9. NR CSI(三) CQI
  10. php 获取qq头像,免费的API接口推荐(获取QQ昵称、头像、QQ秀等等)