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

网站建设技术选择网站如何做ins链接分享

网站建设技术选择,网站如何做ins链接分享,公司网站优化软件,网站建设 网站制作 网站设计一、图论问题 Ⅱ 1、岛屿的最大面积 这题和上一篇博客求岛屿数量如出一辙&#xff0c;都是要找出所有岛屿&#xff0c;深度优先搜索代码如下&#xff1a; # include<iostream> # include<vector>using namespace std;int dfs(vector<vector<int>> …

一、图论问题 Ⅱ

1、岛屿的最大面积

这题和上一篇博客求岛屿数量如出一辙,都是要找出所有岛屿,深度优先搜索代码如下:

# include<iostream>
# include<vector>using namespace std;int dfs(vector<vector<int>> &graph, int i, int j){if(i<0 || i>=graph.size() || j<0 || j>=graph[0].size() || graph[i][j]!=1)return 0;graph[i][j] = 2;return 1 + dfs(graph, i+1, j)+ dfs(graph, i-1, j)+ dfs(graph, i, j+1)+ dfs(graph, i, j-1);
}int main(){int n, m;cin >> n >> m;vector<vector<int>> graph(n, vector<int>(m));for(int i=0; i<n; ++i)for(int j=0; j<m; ++j)cin >> graph[i][j];int ans = 0;for(int i=0; i<n; ++i)for(int j=0; j<m; ++j)if(graph[i][j]==1)ans = max(ans, dfs(graph, i, j));cout << ans << endl;return 0;
}

广度优先搜索代码如下:

# include<iostream>
# include<vector>
#include<queue>using namespace std;vector<vector<int>> dirs({{0, 1}, {0, -1}, {1, 0}, {-1, 0}});
int bfs(vector<vector<int>> &graph, int ii, int jj){queue<pair<int, int>> q;q.push({ii, jj});graph[ii][jj] = 2;int res = 0;while(!q.empty()){auto cur = q.front(); q.pop();++res;for(auto xy : dirs){int i = cur.first + xy[0], j = cur.second + xy[1];if(i<0 || i>=graph.size() || j<0 || j>=graph[0].size() || graph[i][j]!=1)continue;graph[i][j] = 2;q.push({i, j});}}return res;
}int main(){int n, m;cin >> n >> m;vector<vector<int>> graph(n, vector<int>(m));for(int i=0; i<n; ++i)for(int j=0; j<m; ++j)cin >> graph[i][j];int ans = 0;for(int i=0; i<n; ++i)for(int j=0; j<m; ++j)if(graph[i][j]==1)ans = max(ans, bfs(graph, i, j));cout << ans << endl;return 0;
}

2、孤岛总面积

本质上还是要搜索所有岛屿,同时还得统计岛屿面积,将是孤岛的面积累加。这就涉及到不是孤岛的判断,遇到边界就不是孤岛,这个不要加入结果,我们只需要让函数的统计结果减去一个很大的数,从而保证不是孤岛的返回值是负数就好,最后结果只累加正数。这个能在之前的代码下做出最小的改动。
深度优先搜索代码如下:

# include<iostream>
# include<vector>using namespace std;int dfs(vector<vector<int>> &graph, int i, int j){if(i<0 || i>=graph.size() || j<0 || j>=graph[0].size() || graph[i][j]!=1)return 0;graph[i][j] = 2;int res = 1;if(i==0 || j==0 || i==graph.size()-1 || j==graph[0].size()-1)res -= 10000;res += dfs(graph, i+1, j)+ dfs(graph, i-1, j)+ dfs(graph, i, j+1)+ dfs(graph, i, j-1);return res;
}int main(){int n, m;cin >> n >> m;vector<vector<int>> graph(n, vector<int>(m));for(int i=0; i<n; ++i)for(int j=0; j<m; ++j)cin >> graph[i][j];int ans = 0;for(int i=0; i<n; ++i)for(int j=0; j<m; ++j)if(graph[i][j]==1)ans += max(0, dfs(graph, i, j));cout << ans << endl;return 0;
}

广度优先搜索代码如下:

# include<iostream>
# include<vector>
#include<queue>using namespace std;vector<vector<int>> dirs({{0, 1}, {0, -1}, {1, 0}, {-1, 0}});
int bfs(vector<vector<int>> &graph, int ii, int jj){queue<pair<int, int>> q;q.push({ii, jj});graph[ii][jj] = 2;int res = 0;while(!q.empty()){auto cur = q.front(); q.pop();++res;if(cur.first==0 || cur.second==0 || cur.first==graph.size()-1 || cur.second==graph[0].size()-1)res -= 10000;for(auto xy : dirs){int i = cur.first + xy[0], j = cur.second + xy[1];if(i<0 || i>=graph.size() || j<0 || j>=graph[0].size() || graph[i][j]!=1)continue;graph[i][j] = 2;q.push({i, j});}}return res;
}int main(){int n, m;cin >> n >> m;vector<vector<int>> graph(n, vector<int>(m));for(int i=0; i<n; ++i)for(int j=0; j<m; ++j)cin >> graph[i][j];int ans = 0;for(int i=0; i<n; ++i)for(int j=0; j<m; ++j)if(graph[i][j]==1)ans += max(0, bfs(graph, i, j));cout << ans << endl;return 0;
}
http://www.dtcms.com/a/566186.html

相关文章:

  • 图像生成:PyTorch从零开始实现一个简单的扩散模型
  • 网站如何做标题优化硬件工程师培训机构哪家好
  • vue canvas标注
  • 临沂手机网站信息推广技术公司电话号码wordpress插件卡
  • JavaScript ES5 函数全解析:从基础到高级应用
  • 做博物馆网站最重要上海百度提升优化
  • 做网站挣钱吗现在广东省自然资源厅吴鋆
  • 多个ElMessageBox层级问题
  • ES查询语法总结
  • 个人网站备案不能盈利东莞常平镇地图全图
  • 生物医药业销售管理软件推荐
  • 东莞网站建设seo优化华能电子商务平台
  • Python循环嵌套
  • 深入 Lua 元表与元方法
  • 做外贸要看哪些网站好网站营销的优缺点
  • k8s node节点操作
  • 河北建设网站首页网站ui标准
  • Java 线程池深度解析:原理、实战与性能优化​
  • 医疗网站有哪些教你如何建设一个模板网站
  • 宁波网站建设方案咨询做网站网络合同
  • 网站建设与网络推广的关系wordpress 首页显示文章数量
  • 《uni-app跨平台开发完全指南》- 01 - uni-app介绍与环境搭建
  • 服装公司网站设计网站推广的方法枫子
  • 【openGauss】谈一谈PostgreSQL及openGauss中的package
  • 做网站代理以下区域不属于官方网站
  • 找人帮你做ppt的网站吗国内网站建设阿里云
  • 数据库快速复习【基础篇】
  • flink 在技术架构中的配套服务
  • 如何做中英版网站哪些网站可以找兼职做室内设计
  • 银河麒麟桌面版V10SP1下载安装包并离线安装