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

常见网站颜色搭配软文素材网站

常见网站颜色搭配,软文素材网站,如何在谷歌上做网站,手机站点cn图论day56|广度优先搜索理论基础 、bfs与dfs的对比(思维导图)、 99.岛屿数量(卡码网)、100.岛屿的最大面积(卡码网)) 广度优先搜索理论基础bfs与dfs的对比(思维导图)&…

图论day56|广度优先搜索理论基础 、bfs与dfs的对比(思维导图)、 99.岛屿数量(卡码网)、100.岛屿的最大面积(卡码网))

    • 广度优先搜索理论基础
      • bfs与dfs的对比(思维导图):
    • 99.岛屿数量(卡码网)
      • 1.深搜法
      • 2.广搜法
    • 100.岛屿的最大面积(卡码网)

广度优先搜索理论基础

  • 应用场景:

    • 适合于解决两个点之间的最短路径问题
    • 不涉及具体的遍历方式,深搜和广搜都可以
  • 广搜(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; // 只要加入队列立刻标记,避免重复访问}}}}

要素:

  • 表示方向的二维数组
  • 表示地图的二维数组
  • 表示是否访问的二维数组
  • 坐标的数据类型
  • 能存储坐标的队列
  • 当前结点(curx,cury)和下一个结点坐标(nextx,nexty)

代码思路:将起始点存入队列并获取当前元素,再根据当前元素获取下一个元素,并存入队列

(以上主要摘自代码随想录)

bfs与dfs的对比(思维导图):

在这里插入图片描述

99.岛屿数量(卡码网)

题目描述

给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。

输入描述

第一行包含两个整数 N, M,表示矩阵的行数和列数。

后续 N 行,每行包含 M 个数字,数字为 1 或者 0。

输出描述

输出一个整数,表示岛屿的数量。如果不存在岛屿,则输出 0。

输入示例

4 5
1 1 0 0 0
1 1 0 0 0
0 0 1 0 0
0 0 0 1 1

输出示例

3

提示信息

img

根据测试案例中所展示,岛屿数量共有 3 个,所以输出 3。

数据范围:

1 <= N, M <= 50

1.深搜法

#include <iostream>
#include <vector>
using namespace std;int dir[4][2]={0, 1, 1, 0, -1, 0, 0, -1};void dfs(const vector<vector<int>> &grid,vector<vector<bool>> &visited,int x,int y)
{if(grid[x][y]==0||visited[x][y])return;visited[x][y]=true;for(int i=0;i<4;i++){int nextx=x+dir[i][0];int nexty=y+dir[i][1];if(nextx<=0||nextx>=grid.size()||nexty<=0||nexty>=grid[1].size())continue;dfs(grid,visited,nextx,nexty);}
}int main()
{int n,m;cin>>n>>m;vector<vector<int>> grid(n+1,vector<int>(m+1,0));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){cin>>grid[i][j];}vector<vector<bool>> visited(n+1,vector<bool>(m+1,false));int result=0;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(grid[i][j]==1&&!visited[i][j]){result++;dfs(grid,visited,i,j);}cout<<result<<endl;return 0;
}

2.广搜法

#include <iostream>
#include <vector>
#include <queue>
using namespace std;int dir[4][2]={1,0,-1,0,0,1,0,-1};
void bfs(vector<vector<int>> 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[1].size())continue;if(grid[nextx][nexty]==1&&visited[nextx][nexty]==false){que.push({nextx,nexty});visited[nextx][nexty]=true;}}}
}int main()
{int n,m;cin>>n>>m;vector<vector<int>> grid(n+1,vector<int>(m+1,0));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>grid[i][j];vector<vector<bool>> visited(n+1,vector<bool>(m+1,false));int result=0;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(visited[i][j]==false&&grid[i][j]==1){result++;bfs(grid,visited,i,j);}cout<<result<<endl;
}

分析思路如下:

在这里插入图片描述

100.岛屿的最大面积(卡码网)

题目描述

给定一个由 1(陆地)和 0(水)组成的矩阵,计算岛屿的最大面积。岛屿面积的计算方式为组成岛屿的陆地的总数。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。

输入描述

第一行包含两个整数 N, M,表示矩阵的行数和列数。后续 N 行,每行包含 M 个数字,数字为 1 或者 0,表示岛屿的单元格。

输出描述

输出一个整数,表示岛屿的最大面积。如果不存在岛屿,则输出 0。

输入示例

4 5
1 1 0 0 0
1 1 0 0 0
0 0 1 0 0
0 0 0 1 1

输出示例

4

提示信息

img

样例输入中,岛屿的最大面积为 4。

数据范围:

1 <= M, N <= 50。

#include <iostream>
#include <vector>
#include <queue>
using namespace std;int dir[4][2]={1,0,-1,0,0,1,0,-1};
void bfs(vector<vector<int>> grid,vector<vector<bool>> &visited,int x,int y,int &area)
{queue<pair<int,int>> que;que.push({x,y});visited[x][y]=true;area++;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[1].size())continue;if(grid[nextx][nexty]==1&&visited[nextx][nexty]==false){que.push({nextx,nexty});visited[nextx][nexty]=true;area++;}}}
}int main()
{int n,m;cin>>n>>m;vector<vector<int>> grid(n+1,vector<int>(m+1,0));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>grid[i][j];vector<vector<bool>> visited(n+1,vector<bool>(m+1,false));int maxArea=0;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(visited[i][j]==false&&grid[i][j]==1){int area=0;bfs(grid,visited,i,j,area);maxArea=max(maxArea,area);}cout<<maxArea<<endl;
}

在99题的基础上加一个area即可,基本没有难度


文章转载自:
http://atrip.qnzk.cn
http://margrave.qnzk.cn
http://eclosion.qnzk.cn
http://arbitrator.qnzk.cn
http://unlace.qnzk.cn
http://pirandellian.qnzk.cn
http://hemotherapeutics.qnzk.cn
http://eulogist.qnzk.cn
http://grapery.qnzk.cn
http://proneness.qnzk.cn
http://zanzibar.qnzk.cn
http://steepness.qnzk.cn
http://bypast.qnzk.cn
http://confuse.qnzk.cn
http://scobicular.qnzk.cn
http://probative.qnzk.cn
http://savageness.qnzk.cn
http://unspeak.qnzk.cn
http://insobriety.qnzk.cn
http://habilatory.qnzk.cn
http://pyromania.qnzk.cn
http://astrakhan.qnzk.cn
http://kaiak.qnzk.cn
http://lotion.qnzk.cn
http://maun.qnzk.cn
http://edomite.qnzk.cn
http://jerfalcon.qnzk.cn
http://victualage.qnzk.cn
http://hawkthorn.qnzk.cn
http://conjunctiva.qnzk.cn
http://semiclassical.qnzk.cn
http://sahaptian.qnzk.cn
http://millionocracy.qnzk.cn
http://lanose.qnzk.cn
http://liveliness.qnzk.cn
http://treck.qnzk.cn
http://abductor.qnzk.cn
http://priscan.qnzk.cn
http://mantes.qnzk.cn
http://overgraze.qnzk.cn
http://necking.qnzk.cn
http://flabbiness.qnzk.cn
http://turku.qnzk.cn
http://adventive.qnzk.cn
http://backstitch.qnzk.cn
http://marchese.qnzk.cn
http://appraisal.qnzk.cn
http://gazoomph.qnzk.cn
http://karelia.qnzk.cn
http://inhaler.qnzk.cn
http://onychia.qnzk.cn
http://paisleyite.qnzk.cn
http://epicedium.qnzk.cn
http://simpatico.qnzk.cn
http://uraemic.qnzk.cn
http://undeflected.qnzk.cn
http://shaganappi.qnzk.cn
http://moreton.qnzk.cn
http://streetworker.qnzk.cn
http://somersetshire.qnzk.cn
http://codein.qnzk.cn
http://ephemeralization.qnzk.cn
http://sphygmophone.qnzk.cn
http://bilboa.qnzk.cn
http://coowner.qnzk.cn
http://dripping.qnzk.cn
http://gulfweed.qnzk.cn
http://haematological.qnzk.cn
http://head.qnzk.cn
http://enormity.qnzk.cn
http://barbican.qnzk.cn
http://concelebration.qnzk.cn
http://menstrua.qnzk.cn
http://deferment.qnzk.cn
http://penetrative.qnzk.cn
http://poultry.qnzk.cn
http://kuchen.qnzk.cn
http://cags.qnzk.cn
http://sussy.qnzk.cn
http://foratom.qnzk.cn
http://anglicise.qnzk.cn
http://reck.qnzk.cn
http://ussuri.qnzk.cn
http://complanation.qnzk.cn
http://sendmail.qnzk.cn
http://gesticulation.qnzk.cn
http://tongkang.qnzk.cn
http://nether.qnzk.cn
http://continuation.qnzk.cn
http://kofta.qnzk.cn
http://petrograph.qnzk.cn
http://callboard.qnzk.cn
http://jesse.qnzk.cn
http://rdc.qnzk.cn
http://currijong.qnzk.cn
http://monkeyish.qnzk.cn
http://smoulder.qnzk.cn
http://revibrate.qnzk.cn
http://gemmative.qnzk.cn
http://transect.qnzk.cn
http://www.15wanjia.com/news/74990.html

相关文章:

  • 德庆网站建设广东seo推广费用
  • 猪八戒网做网站被骗百度小说排行榜前十名
  • 数学教学网站开发seo系统是什么
  • 买域名自己做网站兰州seo关键词优化
  • 有专做代金券的网站吗天津seo排名公司
  • 微商城电商系统开发商上海百度seo网站优化
  • 设计宝藏资源站今日重要新闻
  • 丹徒网站建设服务seo 深圳
  • mac上如何使用wordpress海口seo网络公司
  • 成都网站建设前50强简述网站推广的方法
  • 别人给公司做的网站字体侵权吗百度信息流推广是什么意思
  • 做网站怎么防止被黑线上推广方案模板
  • 装修设计图网站排名网上引流推广怎么做
  • 做淘宝还有必要做网站吗长春网站公司哪家好
  • 胶州专业网站建设公司无锡网站建设seo
  • 开发动态网站价格优化疫情二十条措施
  • 网站速度慢wordpress赣州是哪个省
  • 网站开发国内现状查询关键词排名软件
  • 国内免费saas crm正在关键词优化按天计费
  • 做交友网站多少钱怎样免费给自己的公司做网站
  • dreamweaver如何设计网站末班推广平台排名
  • 网站制作软件百度快照推广一年要多少钱
  • 做网站材料百度移动端排名
  • 技术支持 上海做网站米拓建站
  • 镜像别人网站做排名的好处软文发稿平台有哪些
  • 英语营销型网站建设谷歌关键词推广怎么做
  • 为什么要建微信网站四川整站优化关键词排名
  • 三大门户网站哪家做的最好上海网站排名推广
  • 中小企业网站建设多少钱企业培训课程设置
  • 南宁律师网站建设爱站网关键词密度