关于BFS的总结
来源:互联网 发布:ati mac驱动放在哪里 编辑:程序博客网 时间:2024/05/21 09:50
最近BFS类型的题目也做了不少了,总结一下大体思路:
具体问题具体改变,一般都是这个解法
#include<cstdio>#include<cstring>#include<queue>#include<algorithm>using namespace std;const int maxn=100;
<span style="font-family: Arial, Helvetica, sans-serif;">const int INF=1000000;</span>
int map[maxn][maxn] //存储每个点的状态int sx,sy,gx,gy;//起点和目标点的坐标int num[maxn][maxn];//记录某点到起点的步数int dir[4][2]={0,1,0,-1,1,0,-1,0}; // 方向向量 struct point // BFS 队列中的状态数据结构{ int x,y; // 坐标位置 int Step_Counter; // 搜索步数统计器}; point p1,p2; void bfs(int x,int y){ p1.x=x; p1.y=y; p1.Step_Counter=0; queue <point> q;// BFS 队列 num[x][y]=0; q.push(p1); // 入队 while(!q.empty()) { p1=q.front(); q.pop(); if(p1.x==gx&&p1.y==gy) // 出现目标态,此时为Step_Counter 的最小值,可以退出即可 { ...... //其实就可以结束了,一般加个break结束就行了 return; } for(int i=0;i<4;i++) { int fx=p1.x+dir[i][0];// 按照规则生成 下一个状态 int fy=p1.y+dir[i][1]; if(fx>=0&&fx<n&&fy>=0&&fy<n)//在这个可行驶的图中 { if(num[fx][fy]>num[p1.x][p1.y]+1)//走或不走取最小值,默认走一步 { num[fx][fy]=num[p1.x][p1.y]+1; p2.x=fx; p2.y=fy; p2.Step_Counter=num[fx][fy]; q.push(p2); } } } } return;} int main(){...... for(int i=0;i<n;i++) for(int j=0;j<n;j++) { map[i][j]//取合适的值存 num[i][j]=INF//默认取一个很大数 } bfs(sx,sy); cout<<num[gx][gy]<<endl; return 0;}
0 0
- 关于BFS的总结
- 关于使用DFS,BFS的一些思考总结
- 关于BFS的小节
- BFS的思路总结。
- BFS初步的总结
- hdu1728 关于bfs的理解
- DFS与BFS的总结
- DFS与BFS的总结
- DFS与BFS的总结
- hdu1253 胜利大逃亡--BFS & BFS的总结
- 关于有传送门的BFS
- 关于 BFS 中 打印路径的问题
- 紫书上的例题,关于BFS
- DFS BFS 路径记录的总结
- DFS和BFS的一点简单总结
- 关于BFS和DFS
- 关于DFS,BFS
- ACM pku 3414 Pots 关于bfs的一个好题
- 图像特征特点及其常用的特征提取与匹配方法
- Word转带目录的swf
- 【Python】迭代器(iterator) vs 生成器(generator)
- 关于sql递归存储过程的问题
- struts1与struts2
- 关于BFS的总结
- Android推送 基于MQTT
- android多dex打包问题
- javascript之对象访问语句(for...in循环,with语句)
- asp 页面执行时间,页面加载时间,timer()用法,毫秒计算
- 【html】ie6下图片之间,图片后面,…
- 【html】html去热点边框,html去锚…
- 【PHP函数】strstr() 函数搜索一个字符串在另一个字符串中的第一次出现的位置
- 【dedecms】【附加表】首页列表内…