啊哈算法搜索应用之宝岛探险(BFS和DFS)
来源:互联网 发布:ios清除文稿与数据 编辑:程序博客网 时间:2024/05/01 04:32
//广搜#include <stdio.h>#include <stdlib.h>#include <string.h>struct node{ int x; int y;};struct node queue[100];//队列实现广搜int head=0;int tail=0;int map[51][51];//存图int book[51][51];//标记走过的点int n;//图的规模int startx,starty;//降落点int next[4][2]={{-1,0},{1,0},{0,-1},{0,1}};void bfs(int x,int y,int color){ if(head>=tail) return; int xnext,ynext; for(int i=0;i<4;i++){ xnext=x+next[i][0]; ynext=y+next[i][1]; if(xnext>=1&&xnext<=n&&ynext>=1&&ynext<=n&&map[xnext][ynext]!=0&&book[xnext][ynext]==0){ map[xnext][ynext]=-1; book[xnext][ynext]=1; queue[tail].x=xnext; queue[tail].y=ynext; tail++; } } head++; bfs(queue[head].x,queue[head].y,color); return;}int main(){ scanf("%d",&n); scanf("%d%d",&startx,&starty); for(int i=0;i<51;i++) memset(book[i],0,sizeof(book[i])); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&map[i][j]); int color=-1;//标记可到达的地方 map[startx][starty]=color; queue[tail].x=startx; queue[tail].y=starty; tail++; bfs(startx,starty,color); for(int i=1;i<=n;i++)//输出处理过的图 for(int j=1;j<=n;j++) printf("%2d%c",map[i][j],j==n?'\n':' '); return 0;}
//深搜#include <stdio.h>#include <stdlib.h>#include <string.h>struct node{ int x; int y;};int map[51][51];//存图int book[51][51];//标记走过的点int n;//图的规模int next[4][2]={{-1,0},{1,0},{0,-1},{0,1}};int startx,starty;void dfs(int x,int y,int color){ int xnext,ynext; for(int i=0;i<4;i++){ xnext=x+next[i][0]; ynext=y+next[i][1]; if(xnext>=1&&xnext<=n&&ynext>=1&&ynext<=n&&map[xnext][ynext]!=0&&book[xnext][ynext]==0){ book[xnext][ynext]=1; map[xnext][ynext]=color; dfs(xnext,ynext,color); //book[xnext][ynext]=0; //深搜不一定有此句,根据需求定 } } return;}int main(){ scanf("%d",&n); scanf("%d%d",&startx,&starty); for(int i=0;i<51;i++) memset(book[i],0,sizeof(book[i])); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&map[i][j]); int color=-1;//标记可到达的地方 map[startx][starty]=color; book[startx][starty]=1; dfs(startx,starty,color); for(int i=1;i<=n;i++)//输出处理过的图 for(int j=1;j<=n;j++) printf("%2d%c",map[i][j],j==n?'\n':' '); return 0;}
1 0
- 啊哈算法搜索应用之宝岛探险(BFS和DFS)
- 宝岛探险 BFS DFS
- DFS/BFS解决宝岛探险
- 啊哈算法搜索应用之再解炸弹人(DFS与BFS)
- 广度优先搜索之宝岛探险
- 第16周 啊哈算法 宝岛探险(下落到某一点求宝岛面积)
- 宝岛探险1(BFS)
- 啊哈算法DFS应用之全排列
- 宝岛探险1(DFS)
- 啊哈报道探险(基础bfs)
- tianchai 12035 宝岛探险 (BFS)
- 啊哈算法BFS应用之解救小哈
- 啊哈算法DFS应用之解救小哈
- 啊哈算法DFS应用之水管工游戏
- 宝岛探险
- 宝岛探险
- 宝岛探险
- BFS和DFS优先搜索算法
- 单例模式
- [LeetCode]238. Product of Array Except Self
- JavaEE环境配置
- 活动与服务间通信
- 智慧北京:引导页面静态点的添加
- 啊哈算法搜索应用之宝岛探险(BFS和DFS)
- Java学习:英雄对决总结—英雄选择
- DOM方式操作XML
- open binder
- 二叉树的遍历本质剖析
- 136. Single Number
- Linux第四课
- 剑指offer:数组中出现次数超过一半的数字(java)
- linux文件操作(一)