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

手机做网站的网站荆州网站建设流程

手机做网站的网站,荆州网站建设流程,小程序开发接单,j2ee 做网站全球变暖 题目描述 你有一张某海域 NxNNxN 像素的照片,"."表示海洋、"#"表示陆地,如下所示: ....... .##.... .##.... ....##. ..####. ...###. ....... 其中"上下左右"四个方向上连在一起的一片陆地…

全球变暖

题目描述

你有一张某海域 NxNNxN 像素的照片,"."表示海洋、"#"表示陆地,如下所示:

.......

.##....

.##....

....##.

..####.

...###.

.......

其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有 2 座岛屿。

由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。

例如上图中的海域未来会变成如下样子:

.......

.......

.......

.......

....#..

.......

.......

请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。

输入描述

第一行包含一个整数 N (1≤N≤1000)N (1≤N≤1000)。

以下 NN 行 NN 列代表一张海域照片。

照片保证第 1 行、第 1 列、第 NN 行、第 NN 列的像素都是海洋。、

输出一个整数表示答案。

输入输出样例

示例

输入

7
.......
.##....
.##....
....##.
..####.
...###.
.......

输出

1

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

总通过次数: 13594  |  总提交次数: 16617  |  通过率: 81.8%

难度: 困难   标签: 2018, 省赛, DFS

算法思路

题目要求统计被完全淹没的岛屿数量。核心思路是通过DFS/BFS遍历每个岛屿,在遍历过程中记录:

  1. ​岛屿总陆地数​​:连通块中#的数量
  2. ​会被淹没的陆地数​​:至少有一面邻接海洋的#数量
    若两者相等,则该岛屿会被完全淹没

算法演示代码实现

#include <iostream>
#include <queue>
using namespace std;typedef pair<int, int> PII;
const int N = 1010;
int n;
char g[N][N];
bool st[N][N];
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};void bfs(int x, int y, int &total, int &bound) {queue<PII> q;q.push({x, y});st[x][y] = true;while (!q.empty()) {auto t = q.front();q.pop();total++;bool is_bound = false;for (int i = 0; i < 4; i++) {int nx = t.first + dx[i], ny = t.second + dy[i];if (nx < 0 || nx >= n || ny < 0 || ny >= n) continue;if (g[nx][ny] == '.') {is_bound = true;continue;}if (!st[nx][ny]) {st[nx][ny] = true;q.push({nx, ny});}}if (is_bound) bound++;}
}int main() {cin >> n;for (int i = 0; i < n; i++) cin >> g[i];int cnt = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (g[i][j] == '#' && !st[i][j]) {int total = 0, bound = 0;bfs(i, j, total, bound);if (total == bound) cnt++;}}}cout << cnt << endl;return 0;
}

代码解析

  1. ​数据结构​​:

    • g[][]:存储海域地图
    • st[][]:标记访问状态
    • dx/dy:方向数组(上右下左)
  2. ​BFS核心逻辑​​:

    • ​总陆地数​​:每访问一个#total++
    • ​淹没判断​​:检查四周是否有海洋,有则bound++
    • ​队列操作​​:将未访问的相邻陆地加入队列
  3. ​主函数流程​​:

    1. 读取输入数据
    2. 遍历每个像素点
    3. 对未访问的#启动BFS
    4. 判断是否完全淹没(total == bound

实例验证

输入:

7
.......
.##....
.##....
....##.
..####.
...###.
.......

执行过程:

  1. 发现左上岛屿(1,1):
    • 总陆地数:4
    • 会被淹没数:4(所有陆地邻接海洋)
    • 完全淹没计数+1
  2. 发现右下岛屿(3,4):
    • 总陆地数:6
    • 会被淹没数:4(中心2块陆地不邻接海洋)
    • 不计入淹没

输出:1

注意事项

  1. ​边界处理​​:
    • 使用nx >= n而非nx > n(索引从0开始)
    • 题目保证边界都是海洋,无需特殊处理
  2. ​访问标记​​:
    • 必须在入队时标记st[nx][ny]=true
    • 避免重复访问导致死循环
  3. ​方向数组​​:
    • 确保4个方向(上右下左)
    • 顺序不影响结果但影响遍历顺序

测试点设计

​测试类型​​输入特点​​验证重点​
最小规模N=3,单个岛屿基础功能
全海洋所有像素为.输出0
全陆地所有像素为#中心不被淹没
最大规模N=1000时间限制1s
复杂岛屿环形/镂空岛屿淹没判断准确性
边界岛屿岛屿贴边(题目保证边界为海)自动淹没

优化建议

  1. ​DFS替代BFS​​:
void dfs(int x, int y, int &total, int &bound) {st[x][y] = true;total++;bool is_bound = false;for(int i=0; i<4; i++){int nx = x+dx[i], ny = y+dy[i];if(nx<0||nx>=n||ny<0||ny>=n) continue;if(g[nx][ny]=='.') is_bound = true;else if(!st[nx][ny]) dfs(nx, ny, total, bound);}if(is_bound) bound++;
}

​优势​​:减少队列操作,代码更简洁

  1. ​内存优化​​:

    • 复用g[][]数组:将访问过的#改为0,省去st[][]空间
    • 方向数组改为静态常量:static const int dx[] = {...}
  2. ​性能优化​​:

    // 提前终止条件
    if (bound > 0 && total - bound == 0) return; // 已确定完全淹没

    ​适用场景​​:当岛屿很大且早期确定不会被完全淹没时

  3. ​并行计算​​:

    #pragma omp parallel for
    for (int i=0; i<n; i++) {// 各列独立处理
    }

    ​优势​​:N=1000时加速明显(需确保线程安全)

http://www.dtcms.com/a/452346.html

相关文章:

  • 重庆媒体网站建设单价西安公司网站制作要多少钱
  • 自适应网站开发文字大小如何处理设计培训it培训
  • 深圳做网站那家好莱芜网站建设案例
  • 牛仔网站的建设风格招聘页面设计
  • 三亚网站建设价格alpine wordpress
  • 福州销售网站设计企业什么系统做网站好
  • 实用电子商务网站建立html5编辑器手机版下载
  • 做外贸的网站如何选择服务器做58类网站需要多少钱
  • 广东官方网站建设百度网站v2升级到v3怎么做
  • 一一影视网站源码个人业余做网站怎么弄
  • 营销型网站建设服务商重庆网站建设设计
  • 南昌县城乡规划建设局官方网站广州小程序软件开发
  • php大流量网站开发规范建站平台 做网站
  • 商务汽车网站建设四川微信网站建设公
  • 铭做网站建设欧洲十大服务器的推荐
  • 中国企业网站查询.net网站开发的例子
  • 男女做暖暖到网站网站建设费用详细表
  • 建筑网站搜图现在还做响应式网站吗
  • 网站建设 资质荣誉长春seo关键词排名
  • 网站特效js代码郑州网站建设工作室
  • 网站开发拥有权约定网页制作基础教程26页简答题是什么
  • flash网站优缺点泸州市住房和城乡建设网站
  • 有个做特价的购物网站权威发布新闻的含义
  • 医美三方网站怎么做网站开发什么语言
  • 兴宁网站建设设计临沂门户网站制作
  • 演示网站怎么做wordpress 表格 文章列表
  • 湘潭网站建设 皆来磐石网络wordpress引用轮播图文件
  • 交易类网站建设功能表seo实战密码在线阅读
  • 网站建设代码流程南通市交通建设处网站
  • 罗湖网站建烟台环保网站建设