迷宫问题 dfs bfs
来源:互联网 发布:服装收银软件 编辑:程序博客网 时间:2024/05/16 23:01
从迷宫入口点(1,1)出发,出口点(m,n);
1.求所有路径条数
2.求最短路径条数
3.输出一条最短路径
题解:向四周搜索,记下所有一步能到达的坐标点;然后依次再从这些点出发,再记下所有一步能到达的坐标点,…,依此类推,直到到达迷宫的出口点(m,n)为止,然后从出口点沿搜索路径回溯直至入口。这样就找到了一条迷宫的最短路径,否则迷宫无路径。
bfs求2,3
#include<stdio.h>#define m 5#define n 5struct point{int x;int y;int pre;int len;}Q[5005];int ans=0;int a[8][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};int f[m+2][n+2]={1,1,1,1,1,1,1,//0可以过 1,0,0,0,1,0,1, 1,0,1,0,0,0,1, 1,0,0,1,0,1,1, 1,1,1,0,1,0,1, 1,0,1,1,1,0,1, 1,1,1,1,1,1,1};void Out(int k){//输出一条最短路径while(Q[k].pre>0){printf("(%d,%d)<--",Q[k].x,Q[k].y);k=Q[k].pre;}printf("(%d,%d)",Q[1].x,Q[1].y);}void bfs(){int i,j,k=1,top=1,x1,y1,find=0;Q[k].x=1;//始点入队列 Q[k].y=1;Q[k].pre=0;Q[k].len=0;f[1][1]=-1;while(top<=k && !find){for(i=0;i<8;i++){x1=Q[top].x+a[i][0];y1=Q[top].y+a[i][1];if(f[x1][y1]==0){k++;Q[k].x=x1;//入队列Q[k].y=y1;Q[k].pre=top;Q[k].len=Q[top].len+1;f[x1][y1]=-1;//避免重复搜索 }if((x1==m) && (y1==n)){find=1;printf("%d\n",Q[k].len);//输出最短路径长度 Out(k);//输出一条最短路径break;}}top++;}if(find==0){printf("NO path\n");}}int main(){bfs();return 0;}dfs求1
#include<stdio.h>#define m 5#define n 5struct point{int x;int y;int pre;}Q[5005];int ans=0;int a[8][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};int f[m+2][n+2]={1,1,1,1,1,1,1,//0可以过 1,0,0,0,1,0,1, 1,0,1,0,0,0,1, 1,0,0,1,0,1,1, 1,1,1,0,1,0,1, 1,0,1,1,1,0,1, 1,1,1,1,1,1,1};int dfs(int x,int y){int i,x1,y1;if(x==m&&y==n){ans++;return 0;}else{for(i=0;i<8;i++){x1=x+a[i][0];y1=y+a[i][1];if(f[x1][y1]==0){f[x1][y1]=1;dfs(x1,y1);f[x1][y1]=0;}}}return 0;}int main(){f[1][1]=0;dfs(1,1);printf("%d",ans);return 0;}
阅读全文
0 0
- 迷宫问题 dfs bfs
- DFS/BFS 关于迷宫问题
- POJ 2251 (三维迷宫问题) DFS /BFS
- (dfs+bfs+记录)迷宫问题(P3984)
- 模拟求解迷宫问题(DFS+BFS)
- FZU1205/SDUT1157_小鼠迷宫问题(DFS+BFS)
- H - 迷宫问题 POJ3984 (BFS+DFS)
- POJ 3984 迷宫问题 (DFS+BFS)
- poj 3984 迷宫问题【BFS && DFS】【简单】
- 【POJ】3984 迷宫问题 BFS 与 DFS
- 迷宫问题 DFS写法 BFS写法
- 迷宫问题、最短路(BFS,DFS)
- OpenJ_Bailian 4127 迷宫问题(DFS+BFS)
- FZU 1205 小鼠迷宫问题 <BFS+DFS>
- BFS,DFS,迷宫
- 数据结构作业 迷宫问题 模拟 之基础的BFS DFS
- SDUT 1157-小鼠迷宫问题(BFS&DFS)
- FZU - 1205 小鼠迷宫问题 (bfs+dfs)
- 确切的说spring框架是做什么的?(翻译自stackoverflow的一个回答)
- Github-Android Studio上首次与非首次提交项目
- tomcat启动多个应用logback初始化失败报Web app root system property already set to different value: 'webapp.root'
- 北宋名臣王安石后世传人在松滋
- WPF TreeView大数据量多层级搜索定位
- 迷宫问题 dfs bfs
- 字符数组、字符串、整型数之间的转化
- memset()、memcpy()、memcmp()的使用方法
- shell知识点
- solr中Cache综述
- springMvc 配置 controller 配置 spring-dispatcher-servlet.xml
- 关于 redis3.2.9 在 centos7 的 配置 及 Jedis 与 虚拟机 centos7 redis 连接的问题
- HashMap使用对象作为key
- Android三种播放视频的方式