DFS与BFS
顾名思义,DFS就是一直在一个方向搜索,当这一方向不可以时退回该点,换下一方向; 而BFS一开始就是向四面八方搜索,把符合条件的点存入队列中,当前一个点都搜索完毕时,再从队列顶中取出点,再向四面八方搜索。
HRBUST1143 http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1143

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<queue>
using namespace std;
int m,n,p,q;
int ma[][],vis[][];
int dx[]={,,-,};
int dy[]={,-,,};
int ans;
bool check(int x,int y){
if(x>&&y>&&x<=m&&y<=n&&ma[x][y]<=ma[p][q]&&vis[x][y]==)
return true;
else return false;
}
int dfs(int x,int y)
{
vis[x][y]=;
ans++;
for(int i=;i<;i++){
int sx=x+dx[i];
int sy=y+dy[i];
if(check(sx,sy))
dfs(sx,sy);
} }
int main(){ while(~scanf("%d%d%d%d",&m,&n,&p,&q)){
ans=;
memset(vis,,sizeof(vis));
memset(ma,,sizeof(ma));
for(int i=;i<=m;i++){
for(int j=;j<=n;j++){
cin>>ma[i][j];
}
}dfs(p,q);
cout<<ans<<endl;
}
}
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<queue>
using namespace std;
int shu[][],m,n,p,q,ans;
int mov[][]={{,},{-,},{,},{,-}};
int vis[][];
struct point{
int x;int y;
};
bool check(point a){
if(a.x>&&a.y>&&a.x<=m&&a.y<=n&&vis[a.x][a.y]==&&shu[a.x][a.y]<=shu[p][q]){
return true; }
else return false;
} int bfs(int x,int y){
queue<point>que;
int coun=;
point now,temp;
now.x=x;
now.y=y;
que.push(now);
vis[x][y]=;
while(!que.empty()){
temp=que.front();
que.pop();
for(int k=;k<;k++){
now.x=temp.x+mov[k][];
now.y=temp.y+mov[k][];
if(check(now)){
que.push(now);
vis[now.x][now.y]=;
//cout<<now.x<<" "<<now.y<<endl;
coun++;
}
}
}return coun;
}
int main(){
while(~scanf("%d%d%d%d",&m,&n,&p,&q)){
memset(shu,,sizeof(shu));
for(int i=;i<=m;i++){
for(int j=;j<=n;j++){
cin>>shu[i][j];
}
}
memset(vis,,sizeof(vis)); cout<<bfs(p,q)<<endl;
}
}
上面是我写的代码,输出是对的啊,但是不知道为什么就是不过,若是有大神看见啦希望帮我改一改啊^...^
DFS与BFS的更多相关文章
- Clone Graph leetcode java(DFS and BFS 基础)
题目: Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. ...
- 数据结构(12) -- 图的邻接矩阵的DFS和BFS
//////////////////////////////////////////////////////// //图的邻接矩阵的DFS和BFS ////////////////////////// ...
- 数据结构(11) -- 邻接表存储图的DFS和BFS
/////////////////////////////////////////////////////////////// //图的邻接表表示法以及DFS和BFS //////////////// ...
- 在DFS和BFS中一般情况可以不用vis[][]数组标记
开始学dfs 与bfs 时一直喜欢用vis[][]来标记有没有访问过, 现在我觉得没有必要用vis[][]标记了 看代码 用'#'表示墙,'.'表示道路 if(所有情况都满足){ map[i][j]= ...
- 图论中DFS与BFS的区别、用法、详解…
DFS与BFS的区别.用法.详解? 写在最前的三点: 1.所谓图的遍历就是按照某种次序访问图的每一顶点一次仅且一次. 2.实现bfs和dfs都需要解决的一个问题就是如何存储图.一般有两种方法:邻接矩阵 ...
- 图论中DFS与BFS的区别、用法、详解?
DFS与BFS的区别.用法.详解? 写在最前的三点: 1.所谓图的遍历就是按照某种次序访问图的每一顶点一次仅且一次. 2.实现bfs和dfs都需要解决的一个问题就是如何存储图.一般有两种方法:邻接矩阵 ...
- 数据结构基础(21) --DFS与BFS
DFS 从图中某个顶点V0 出发,访问此顶点,然后依次从V0的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和V0有路径相通的顶点都被访问到(使用堆栈). //使用邻接矩阵存储的无向图的深度 ...
- dfs和bfs的区别
详见转载博客:https://www.cnblogs.com/wzl19981116/p/9397203.html 1.dfs(深度优先搜索)是两个搜索中先理解并使用的,其实就是暴力把所有的路径都搜索 ...
- 邻接矩阵实现图的存储,DFS,BFS遍历
图的遍历一般由两者方式:深度优先搜索(DFS),广度优先搜索(BFS),深度优先就是先访问完最深层次的数据元素,而BFS其实就是层次遍历,每一层每一层的遍历. 1.深度优先搜索(DFS) 我一贯习惯有 ...
- 判断图连通的三种方法——dfs,bfs,并查集
Description 如果无向图G每对顶点v和w都有从v到w的路径,那么称无向图G是连通的.现在给定一张无向图,判断它是否是连通的. Input 第一行有2个整数n和m(0 < n,m < ...
随机推荐
- windows类书的学习心得(转载)
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
- Thinkpad X240修改bios引导方式
来源:http://blog.csdn.net/jsship/article/details/19121149 修改笔记本的BIOS设置!这是非常重要的步骤之一.否则,你的U盘不能引导手提电脑进入PE ...
- 发布一个.net mvc站点遇到的问题及解决
1.先通过vs2012发布.net mvc项目,遇到问题是一路默认下来,提示发布已成功,但对应文件夹里没有任何文件 解决: 第一步,新建了一个文件夹 第二步,在[配置文件]步骤,新建配置文件 第三步, ...
- 黄聪:利用OpenXml生成Word2007文档(转)
原文:http://blog.csdn.net/francislaw/article/details/7568317 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 一Op ...
- python3 写文件
#coding:utf-8 wfile = open('test.txt','w') str=''' 在广大玩家的要求下这款修改器诞生 了,这首先要归功于太阁狂人_Cath_Sean 的大力支持,这款 ...
- Linux客户端、服务器、窗口管理器的关系
嵌入式linux中文站发现很多LINUX初学者在学习linux图形方面的知识时会遇到一些概念,如:X.X11.Xfree86.WM.KDE.GNOME.QT.QT/E.Qtopia.DirectFB. ...
- DBA_Oracle性能优化的基本方法概述(方法论)
2014-12-18 Created By BaoXinjian
- uva 725 Division(暴力模拟)
Division 紫书入门级别的暴力,可我还是写了好长时间 = = [题目链接]uva 725 [题目类型]化简暴力 &题解: 首先要看懂题意,他的意思也就是0~9都只出现一遍,在这2个5位数 ...
- 第一个Flask Web
https://github.com/ethan-funny/head-first-flask iOS多线程技术方案 http://www.cnblogs.com/Erma-king/p/593427 ...
- python 解析json
一.概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的 ...