bfs(广搜)
来源:互联网 发布:jersey接收json 编辑:程序博客网 时间:2024/04/28 18:32
学长给我们讲广搜的ppt太帮了,通过动态模拟进队列,访问,退出队列,让我明白了bfs的基本思想。bfs通常解决最小步数是多少的问题,只能标记,无法取消标记,不像dfs。通过bfs,第一次找到的解决方案,就是耗费最小的方案。
广搜代码实现:
void bfs(int u){memset(vis,0,sizeof(vis));queue<int>q;vis[u]=1;q.push(u);while(!q.empty()){u=q.front();q.pop();for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].v;if(!vis[v]){vis[v]=1;q.push(v);}}}}
例题:nyoj--最小步数(简单题,一种不需要变相思维的题,直接套用模板)
#include<stdio.h>#include<string.h>#include<queue>#include<iostream>using namespace std;#define INF 0xfffffffint x,y,ex,ey,ans,vis[11][11];int dx[4]={0,1,-1,0};int dy[4]={1,0,0,-1};int map[9][9]={ 1,1,1,1,1,1,1,1,1, 1,0,0,1,0,0,1,0,1, 1,0,0,1,1,0,0,0,1, 1,0,1,0,1,1,0,1,1, 1,0,0,0,0,1,0,0,1, 1,1,0,1,0,1,0,0,1, 1,1,0,1,0,1,0,0,1, 1,1,0,1,0,0,0,0,1, 1,1,1,1,1,1,1,1,1,};struct node{int x,y,step;}a,temp;int jud(struct node a){if(a.x<0||a.x>=9||a.y<0||a.y>=9||vis[a.x][a.y]||map[a.x][a.y])return 0;return 1;}void bfs(){a.x=x;a.y=y;a.step=0;memset(vis,0,sizeof(vis));queue<node>q;vis[x][y]=1;q.push(a);while(!q.empty()){a=q.front();q.pop();for(int i=0;i<4;i++){temp.x=a.x+dx[i];temp.y=a.y+dy[i];temp.step=a.step+1;if(jud(temp)){if(temp.x==ex&&temp.y==ey){ans=temp.step;return;}vis[temp.x][temp.y]=1;q.push(temp);}}}}int main(){int t;scanf("%d",&t);while(t--){int c=0;scanf("%d%d%d%d",&x,&y,&ex,&ey);if(x==ex&&y==ey){printf("0\n");continue;}ans=INF;bfs();printf("%d\n",ans);}}
0 0
- bfs(广搜)
- BFS(广搜) 救援
- Dungeon Master (广搜,bfs)
- hdu1254 推箱子(广搜bfs)
- 广搜(BFS)学习笔记
- POJ3126(素数表+广搜BFS)
- lightoj1046 Rider(广搜BFS)
- BFS(广搜) 细胞问题
- BFS(广搜) 骑士旅行
- BFS(广搜) 翻币问题
- BFS(广搜) 最小转弯问题
- BFS(广搜训练题目)
- G - BFS广搜
- 广搜模版BFS
- 【bfs(广搜)模板】
- POJ 1426 广搜BFS
- 广搜BFS 迷宫问题
- hdu2717(裸bfs广搜)
- 分解字符串
- js中如何将GBK的英文转为普通英文, 全角转为半角
- define和inline关键字比较
- 29. Element ownerDocument 属性
- iOS Layer层相关,图片裁剪与形变
- bfs(广搜)
- JNI高级教程之数据类型转换
- 使用javascript的onsubmit进行表单合法性验证
- 解决jquery操作checkbox全选全不选无法勾选问题
- 杭电 2012 素数判定
- hdu 2717 && poj 3278 Catch That Cow
- 30. Element parentNode 属性
- Android中padding的用法总结
- linux centos 设置防火墙 iptables 如何 禁止某个IP访问 登陆