当前位置: 首页 > news >正文

网站开发简历模板深圳12个区地图

网站开发简历模板,深圳12个区地图,初级程序员与网站开发,帝国cms这么做网站[算法日志]图论: 广度优先搜索(BFS) 广度优先概论 ​ 广度优先遍历也是一种常用的遍历图的算法策略,其思想是将本节点相关联的节点都遍历一遍后才切换到相关联节点重复本操作。这种遍历方式类似于对二叉树节点的层序遍历,即先遍历完子节点后…

[算法日志]图论: 广度优先搜索(BFS)

广度优先概论

​ 广度优先遍历也是一种常用的遍历图的算法策略,其思想是将本节点相关联的节点都遍历一遍后才切换到相关联节点重复本操作。这种遍历方式类似于对二叉树节点的层序遍历,即先遍历完子节点后再去遍历子节点的各个子节点。

代码框架

int dir[4][2] = {0, 1, 1, 0, -1, 0, 0, -1}; // 表示四个方向
// grid 是地图,也就是一个二维数组
// visited标记访问过的节点,不要重复访问
// x,y 表示开始搜索节点的下标
void bfs(vector<vector<char>>& grid, vector<vector<bool>>& visited, int x, int y) {queue<pair<int, int>> que; // 定义队列que.push({x, y}); // 起始节点加入队列visited[x][y] = true; // 只要加入队列,立刻标记为访问过的节点while(!que.empty()) { // 开始遍历队列里的元素pair<int ,int> cur = que.front(); que.pop(); // 从队列取元素int curx = cur.first;int cury = cur.second; // 当前节点坐标for (int i = 0; i < 4; i++) { // 开始想当前节点的四个方向左右上下去遍历int nextx = curx + dir[i][0];int nexty = cury + dir[i][1]; // 获取周边四个方向的坐标if (nextx < 0 || nextx >= grid.size() || nexty < 0 || nexty >= grid[0].size()) continue;  // 坐标越界了,直接跳过if (!visited[nextx][nexty]) { // 如果节点没被访问过que.push({nextx, nexty});  // 队列添加该节点为下一轮要遍历的节点visited[nextx][nexty] = true; // 只要加入队列立刻标记,避免重复访问}}}
}

通过队列辅助进行迭代操作是BFS的常用遍历手段(当然也可以使用栈),而除了会额外使用一个visited数组辅助进行路径判断,其他的步骤都可以照搬二叉树的层序遍历。

BFS的简单应用

leetcode 200(岛屿数量)

BFS示例代码

 	const int dir[4][2] = { {0, -1}, {1, 0}, {0, 1}, {-1, 0} };void BFS(const vector<vector<char>>& g, vector<vector<bool>>& v, queue<pair<int,int>>& h){while (!h.empty()){int X = h.front().first;int Y = h.front().second;h.pop();for (int i = 0; i < 4; ++i){int nextX = X + dir[i][0];int nextY = Y + dir[i][1];if (nextX < 0 || nextY < 0 || nextX >= g[0].size() || nextY >= g.size())continue;if (!v[nextY][nextX] && g[nextY][nextX] == '1'){v[nextY][nextX] = true;h.push(pair<int, int>(nextX, nextY));}}}return;}int numIslands(const vector<vector<char>>& gird){if (gird.empty())return 0;vector<vector<bool>> visited(gird.size(), vector<bool>(gird[0].size(), false));queue<pair<int, int>> help;int count = 0;for (int i = 0; i < gird.size(); ++i)for (int j = 0; j < gird[0].size(); ++j){if (!visited[i][j] && gird[i][j] == '1'){++count;help.push({j, i});visited[i][j] = true;BFS(gird, visited, help);					}}return count;}

当然,对于这种岛屿问题并没有对遍历方式做限制,因此自然有DFS解法。

	const int dir[4][2] = { {0, -1}, {1, 0}, {0, 1}, {-1, 0} };void DFS2(vector<vector<bool>>& v, int& c,int depth ,int nextX, int nextY){if (depth > 0 && (nextX < 0 || nextY < 0 || nextX >= v[0].size()|| nextY >= v.size() || v[nextY][nextX]))return;for(int i = nextY; i < v.size(); ++i)for (int j = nextX; j < v[0].size(); ++j){if (v[i][j]){if (depth > 0)return;continue;}if (depth == 0)++c;v[i][j] = true;for (int k = 0; k < 4; ++k){DFS2(v, c, depth + 1, j + dir[k][0], i + dir[k][1]);}}return;}int numIslands1(const vector<vector<char>>& grid){if (grid.empty())return 0;vector<vector<bool>> visited(grid.size(), vector<bool>(grid[0].size()));int count = 0;for (int i = 0; i < grid.size(); ++i)for (int j = 0; j < grid[0].size(); ++j){if (grid[i][j] == '1')visited[i][j] = false;elsevisited[i][j] = true;}DFS2(visited, count, 0, 0, 0);return count;}
http://www.yayakq.cn/news/30982/

相关文章:

  • 环保企业网站模板泉州刺桐古建筑公司网站
  • 怎么给网站做外链邵连虎系统管理包括哪些内容
  • 建筑公司网站的目标用户宁波网络公司电话
  • 网站** 教程深圳网站建设 卓
  • 途牛旅游网站建设背景重庆知道推广网站方法
  • 热度网络网站建设wordpress配置七牛cdn
  • 上海网站制作上海网站制作邯郸网站开发定制
  • 网站关键词修改网站建设的技巧
  • 织梦开发网站芜湖市建设银行支行网站
  • 网站升级改版摄影作品投稿平台
  • 用phpnow搭建网站的整个流程网页修改和编辑的软件有哪些
  • 如何做自助搜券网站做视频网站用什么源码
  • wordpress 手机站目录seo在线诊断工具
  • 网页首站工商注册公司名称核准
  • 成都网站公司ccyy切换路线专线
  • 外贸网站建设 深圳网站建设课程设计内容
  • 石家庄中小企业网站制作重庆公司做网站
  • 青浦网站设计常州 网站设计
  • 100个免费推广网站定制网站与模板建站维护
  • 网站建设公司好发信息网网络销售推广是做什么的具体
  • 中国网站建设的利弊中资源 网站域名解析
  • 网站没有做伪静态是什么样子创鑫时代广告公司简介
  • 青岛网站设计公司成都手机网站建设价格
  • 网站建设工作总结范文用帝国做的网站只收录首页
  • 做甜品台的网站青岛网站制作服务
  • 阿里云上可以做网站吗百度seo搜索排名
  • win7局域网网站开发秦皇岛海三建设一分公司
  • 国外html5网站源码口腔医院网站做优化
  • dw用ps切片做网站公司资质查询官方网站
  • 旅行社网站开发 论文网站添加百度商桥