顾名思义,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的更多相关文章

  1. 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. ...

  2. 数据结构(12) -- 图的邻接矩阵的DFS和BFS

    //////////////////////////////////////////////////////// //图的邻接矩阵的DFS和BFS ////////////////////////// ...

  3. 数据结构(11) -- 邻接表存储图的DFS和BFS

    /////////////////////////////////////////////////////////////// //图的邻接表表示法以及DFS和BFS //////////////// ...

  4. 在DFS和BFS中一般情况可以不用vis[][]数组标记

    开始学dfs 与bfs 时一直喜欢用vis[][]来标记有没有访问过, 现在我觉得没有必要用vis[][]标记了 看代码 用'#'表示墙,'.'表示道路 if(所有情况都满足){ map[i][j]= ...

  5. 图论中DFS与BFS的区别、用法、详解…

    DFS与BFS的区别.用法.详解? 写在最前的三点: 1.所谓图的遍历就是按照某种次序访问图的每一顶点一次仅且一次. 2.实现bfs和dfs都需要解决的一个问题就是如何存储图.一般有两种方法:邻接矩阵 ...

  6. 图论中DFS与BFS的区别、用法、详解?

    DFS与BFS的区别.用法.详解? 写在最前的三点: 1.所谓图的遍历就是按照某种次序访问图的每一顶点一次仅且一次. 2.实现bfs和dfs都需要解决的一个问题就是如何存储图.一般有两种方法:邻接矩阵 ...

  7. 数据结构基础(21) --DFS与BFS

    DFS 从图中某个顶点V0 出发,访问此顶点,然后依次从V0的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和V0有路径相通的顶点都被访问到(使用堆栈). //使用邻接矩阵存储的无向图的深度 ...

  8. dfs和bfs的区别

    详见转载博客:https://www.cnblogs.com/wzl19981116/p/9397203.html 1.dfs(深度优先搜索)是两个搜索中先理解并使用的,其实就是暴力把所有的路径都搜索 ...

  9. 邻接矩阵实现图的存储,DFS,BFS遍历

    图的遍历一般由两者方式:深度优先搜索(DFS),广度优先搜索(BFS),深度优先就是先访问完最深层次的数据元素,而BFS其实就是层次遍历,每一层每一层的遍历. 1.深度优先搜索(DFS) 我一贯习惯有 ...

  10. 判断图连通的三种方法——dfs,bfs,并查集

    Description 如果无向图G每对顶点v和w都有从v到w的路径,那么称无向图G是连通的.现在给定一张无向图,判断它是否是连通的. Input 第一行有2个整数n和m(0 < n,m < ...

随机推荐

  1. IOS开发-UITextField代理常用的方法总结

    1.//当用户全部清空的时候的时候 会调用 -(BOOL)textFieldShouldClear:(UITextField *)textField: 2.//可以得到用户输入的字符 -(BOOL)t ...

  2. 【linux】locate介绍

    Locale和everything 类似,有本地的检索库,它会自动更新检索库,但新创建的文件,不能用locale 查到,需要手动更新检索库update db 才能搜索到,在/tmp 目录下的文件不能搜 ...

  3. sphinx 配置sphinx.conf

    sphinx的配置文件是在配置的时候最容易出错的了: 基本概念: source:数据源,数据是从什么地方来的. index:索引,当有数据源之后,从数据源处构建索引.索引实际上就是相当于一个字典检索. ...

  4. SPOJ #429 Simple Numbers Conversion

    This is simply a human work simulation - exactly reproducing how you do it by hand. Nothing special. ...

  5. eclipse 中的注释 快捷键-添加/* */注释-Ctrl+Shift+/

    (4)Ctrl+Shift+/ 说明:添加/* */注释 (5)Ctrl+Shift+\ 说明:消除/* */注释 更多:http://blog.csdn.net/wjeson/article/det ...

  6. 2016 Multi-University Training Contest 5 World is Exploding

    转载自:http://blog.csdn.net/queuelovestack/article/details/52096337 [题意]给你一个序列A,选出四个下标不同的元素,下标记为a,b,c,d ...

  7. hdu 1361 Parencodings 简单模拟

    Parencodings 题意: 由括号序列S可经P规则和W规则变形为P序列和W序列. p规则是:pi是第i个右括号左边的左括号的数: w规则是:wi是第i右括号与它匹配的左括号之间右括号的数(其中包 ...

  8. HDU 2089 不要62(数位dp入门)

    题意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个. 题解:这是数位DP的入门题了,首先要理解数DP的原理,DP[i][j]:代表第i位的第j值,举个栗子:如4715   数位数是从右向 ...

  9. 2.Could not open Selected VM debug port (8700). Make sure you do not have another instance of DDMS or of the eclipse plugin running

    在eclipse.ini配置文件最后加上:-Djava.net.preferIPv4Stack=true 其他类似

  10. REST总结(转)

    REST总结           REST(Representational State Transfer)是代表状态传输的缩写,它代表了分布式超媒体系统的体系结构风格,它是一种针对网络应用的设计和开 ...