广度优先搜索之宝岛探险
来源:互联网 发布:java wait的用法 编辑:程序博客网 时间:2024/04/29 18:58
对于一个矩阵,某一点的值代表是陆地,求初始一个点的小岛面积,即连起来的有多少个不孤立的点。
#include<stdio.h>struct note{int x;int y;};int main(){struct note que[2501];int head, tail;int a[51][51];int book[51][51] = { 0 };//标记是否走过,1代表走过,0代表未走int i, j, k, tx, ty, sum, max = 0, startx, starty, mx, my,n,m;int next[4][2] = { {0,1}, {1,0}, {0,-1}, {-1,0} };scanf_s("%d %d %d %d", &n, &m, &startx, &starty);for (i = 1; i <= n;i++) for (j = 1; j <= m;j++)scanf_s("%d", &a[i][j]);head = 1, tail = 1;//init the queueque[tail].x = startx, que[tail].y = starty;tail++;book[startx][starty] = 1;sum = 1;while (head < tail)//队列不为空的时候循环{for (k = 0; k <= 3; k++)//四个方向枚举{tx = que[head].x + next[k][0];ty = que[head].y + next[k][1];//计算下一步的坐标if (tx<1 || tx>n || ty<1 || ty>m)//判断是否出界continue;if (a[tx][ty]>0 && book[tx][ty] == 0)//判断是否是陆地且是否被走过{sum++;book[tx][ty] = 1;//每个点只入队一次,标记改点已经走过que[tail].x = tx;//将新的点入队列que[tail].y = ty;tail++;}}head++;//每一个点枚举完四个方向该点就出队列}printf_s("%d\n", sum);getchar();return 0;}
0 0
- 广度优先搜索之宝岛探险
- 宝岛探险深度优先搜索(着色法)
- 啊哈算法搜索应用之宝岛探险(BFS和DFS)
- 宝岛探险 深度优先—C
- 宝岛探险
- 宝岛探险
- 宝岛探险
- 迷宫之广度优先搜索
- 图之广度优先搜索
- 算法之广度优先搜索
- 算法之深度优先搜索和广度优先搜索
- 图算法之广度优先搜索
- 图的遍历 之 广度优先搜索
- 图遍历之广度优先搜索
- 数据结构之图的广度优先搜索
- 图的遍历之广度优先搜索
- 广度优先搜索之最短路径
- 基本图算法之广度优先搜索
- esri infowindow 样式修改 和 按钮事件
- sqlplus登陆方式
- nvarchar和varchar的区别
- CSS content内容生成技术以及应用
- string替换所有指定字符串(C++)
- 广度优先搜索之宝岛探险
- Category添加属性与成员变量
- windows编程,加载dll库示例
- 网页设计:Meta标签详解
- 广州隆鼻哪家医院好
- Asp.NET大文件上传开发总结(一)
- C++字符串完全指南
- Android UI开发专题(一) 之界面设计
- ORMLite简单使用说明