【題解-Acwing】1097. 池塘計數

題目:1097. 池塘計數

題目描述

農夫約翰有一片 N?M 的矩形土地。

最近,由于降雨的原因,部分土地被水淹沒了。

現在用一個字符矩陣來表示他的土地。

每個單元格內,如果包含雨水,則用”W”表示,如果不含雨水,則用”.”表示。

現在,約翰想知道他的土地中形成了多少片池塘。

每組相連的積水單元格集合可以看作是一片池塘。

每個單元格視為與其上、下、左、右、左上、右上、左下、右下八個鄰近單元格相連。

請你輸出共有多少片池塘,即矩陣中共有多少片相連的”W”塊。

輸入格式

第一行包含兩個整數 N 和 M。

接下來 N 行,每行包含 M 個字符,字符為”W”或”.”,用以表示矩形土地的積水狀況,字符之間沒有空格。

輸出格式

輸出一個整數,表示池塘數目。

數據范圍

1 ≤ N,M ≤ 1000

時空限制

1s / 64MB

輸入樣例

10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.

輸出樣例

3

代碼

#include<iostream>using namespace std;typedef pair<int, int> PII;
const int MaxN = 1000 + 10, MaxM = 1000 + 10;int N, M, hh, tt = -1, vis[MaxN][MaxM], sum;
char map[MaxN][MaxM];
PII q[MaxN * MaxM];void init(){hh = 0, tt = -1;
}void insert(int x, int y){q[++ tt] = {x, y};
}void dele(){hh ++;
}bool isempty(){return hh > tt;
}void bfs(int x, int y){init();insert(x, y);vis[x][y] = 1;while(!isempty()){auto t = q[hh];dele();for(int i = t.first - 1; i <= t.first + 1; i ++){for(int j = t.second - 1; j <= t.second + 1; j ++){if(i == t.first && j == t.second){continue;}if(i < 0 || i >= N || j < 0 || j >= M){continue;}if(map[i][j] == '.' || vis[i][j]){continue;}insert(i, j);vis[i][j] = 1;}}}
}int main(){scanf("%d%d", &N, &M);for(int i = 0; i < N; i ++){scanf("%s", map[i]);}for(int i = 0; i < N; i ++){for(int j = 0; j < M; j ++){if(map[i][j] == 'W' && !vis[i][j]){bfs(i, j);sum ++;}}}printf("%d", sum);return 0;
}

結果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82985.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82985.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82985.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Flask框架的前后端分離項目開發流程是怎樣的?

基于Flask框架的前后端分離項目開發流程可分為需求分析、架構設計、并行開發、集成測試和部署上線五個階段。以下是詳細步驟和技術要點&#xff1a; 一、需求分析與規劃 1. 明確項目邊界 功能范圍&#xff1a;確定核心功能&#xff08;如用戶認證、數據管理、支付流程&#…

板凳-------Mysql cookbook學習 (十--2)

5.12 模式匹配中的大小寫問題 mysql> use cookbook Database changed mysql> select a like A, a regexp A; ------------------------------ | a like A | a regexp A | ------------------------------ | 1 | 1 | --------------------------…

編程實驗篇--線性探測哈希表

線性探測哈希表性能測試實驗報告 1. 實驗目的 編程實現線性探測哈希表。編程測試線性探測哈希表。了解線性探測哈希表的性能特征&#xff0c;并運行程序進行驗證。 2. 實驗背景與理論基礎 哈希表是一種高效的數據結構&#xff0c;用于實現符號表&#xff08;Symbol Table&a…

使用Python提取PDF元數據的完整指南

PDF文檔中包含著豐富的元數據信息&#xff0c;這些信息對文檔管理和數據分析具有重要意義。本文將詳細介紹如何利用Python高效提取PDF元數據&#xff0c;并對比主流技術方案的優劣。 ## 一、PDF元數據概述 PDF元數據&#xff08;Metadata&#xff09;是包含在文檔中的結構化信…

【量化】策略交易類型

通過查找相關資料&#xff0c;這里羅列了一些常見的策略交易類型&#xff0c;如下&#xff1a; &#x1f4ca; 技術分析類策略 均線交叉策略&#xff08;SMA、EMA&#xff09;動量策略&#xff08;Momentum&#xff09;相對強弱指數策略&#xff08;RSI&#xff09;隨機指標策…

【Go語言基礎【17】】切片:一種動態數組

文章目錄 零、概述一、切片基礎1、切片的結構2、切片的創建方式3、切片的操作與擴容 二、切片的拷貝與共享內存三、切片作為函數參數 Go語言的切片&#xff08;slice&#xff09;是一種動態數組&#xff0c;提供了靈活、高效的元素序列操作。它基于底層數組實現&#xff0c;通過…

MybatisPlus使用DB靜態工具出現找不到實體類的報錯

報錯&#xff1a;Not Found TableInfoCache. 原因在于沒有創建實體類對應的mapper&#xff0c;并且該mapper還必須繼承baseMapper。 猜測大概的原理應該是DB會去查找實體類對應的mapper&#xff0c;然后通過mapper去查找對應的實體類。

Linux nano命令的基本使用

參考資料 GNU nanoを使いこなすnano基礎 目錄 一. 簡介二. 文件打開2.1 普通方式打開文件2.2 只讀方式打開文件 三. 文件查看3.1 打開文件時&#xff0c;顯示行號3.2 翻頁查看 四. 文件編輯4.1 Ctrl K 復制 和 Ctrl U 粘貼4.2 Alt/Esc U 撤回 五. 文件保存與退出5.1 Ctrl …

LLMs 系列科普文(15)

前面 14 篇文章&#xff0c;就是本系列科普文中想介紹的大部分技術內容。重點講述了訓練這些模型的三個主要階段和范式&#xff1a;預訓練、監督微調和強化學習。 我向你們展示了這些步驟大致對應于我們已用于教導兒童的過程。具體來說&#xff0c;我們將預訓練比作通過閱讀說…

深入理解匯編語言中的順序與分支結構

本文將結合Visual Studio環境配置、順序結構編程和分支結構實現&#xff0c;全面解析匯編語言中的核心編程概念。通過實際案例演示無符號/有符號數處理、分段函數實現和邏輯表達式短路計算等關鍵技術。 一、匯編環境配置回顧&#xff08;Win32MASM&#xff09; 在Visual Studi…

Selenium4+Python的web自動化測試框架

一、什么是Selenium&#xff1f; Selenium是一個基于瀏覽器的自動化測試工具&#xff0c;它提供了一種跨平臺、跨瀏覽器的端到端的web自動化解決方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE&#xff1a;Firefo…

React 樣式方案與狀態方案初探

React 本身只提供了基礎 UI 層開發范式&#xff0c;其他特性的支持需要借助相關社區方案實現。本文將介紹 React 應用體系中樣式方案與狀態方案的主流選擇&#xff0c;幫助開發者根據項目需求做出合適的選擇。 1. React 樣式方案 1.1. 內聯樣式 (Inline Styles) 通過 style …

PHP中如何定義常量以及常量和變量的主要區別

在PHP編程中&#xff0c;常量和變量是存儲數據的兩種重要方式。常量在定義后值不能改變&#xff0c;而變量的值可以在程序執行過程中發生變化。本文將詳細介紹如何在PHP中定義常量&#xff0c;并深入探討常量和變量的主要區別。 一、PHP中定義常量 1. 使用 define 函數定義常…

奈飛工廠官網,國內Netflix影視在線看|中文網頁電腦版入口

奈飛工廠是一個專注于提供免費Netflix影視資源的在線播放平臺&#xff0c;致力于為國內用戶提供的Netflix熱門影視內容。該平臺的資源與Netflix官網基本同步&#xff0c;涵蓋電影、電視劇、動漫和綜藝等多個領域。奈飛工廠的界面簡潔流暢&#xff0c;資源分類清晰&#xff0c;方…

CMS內容管理系統的設計與實現:架構設計

一、整體架構方案 &#xff08;一&#xff09;架構方案選擇&#xff08;根據項目規模&#xff09; 1. 中小型項目推薦方案&#xff08;團隊<10人&#xff09; #mermaid-svg-cjzaHpptY8pYWnzo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:1…

嵌入式里的時間魔法:RTC 與 BKP 深度拆解

文章目錄 RTC實時時鐘與BKPUnix時間戳UTC/GMT時間戳轉換時間戳轉換BKP簡介BKP基本結構1. 電池供電模塊&#xff08;VBAT 輸入&#xff09;2. 侵入檢測模塊&#xff08;TAMPER 輸入&#xff09;3. 時鐘輸出模塊&#xff08;RTC 輸出&#xff09;4. 內部寄存器組 RTC簡介RTC時鐘源…

STC8H系列 驅動步進電機

STC8H 驅動步進電機 一、引言二、硬件設計三、軟件設計Step_Motor2.c文件Step_ Motor2.h文件 一、引言 眾所周知STC8H系列有兩個PWM&#xff0c;分別為PWMA和PWMB外設模塊&#xff0c;我全都用上&#xff0c;豈不是就有兩個帶動電機的脈沖信號&#xff1f;&#xff01;哈哈哈哈…

Python高階函數:從入門到精通

目錄 Python高階函數詳解&#xff1a;從概念到高級應用引言&#xff1a;函數式編程的魅力一、高階函數基礎概念1.1 什么是高階函數1.2 Python中的一等函數 二、內置高階函數詳解2.1 map函數&#xff1a;數據轉換利器2.2 filter函數&#xff1a;數據篩選專家2.3 reduce函數&…

騰訊開源視頻生成工具 HunyuanVideo-Avatar,上傳一張圖+一段音頻,就能讓圖中的人物、動物甚至虛擬角色“活”過來,開口說話、唱歌、演相聲!

騰訊混元團隊提出的 HunyuanVideo-Avatar 是一個基于多模態擴散變換器&#xff08;MM-DiT&#xff09;的模型&#xff0c;能夠生成動態、情緒可控和多角色對話視頻。支持僅 10GB VRAM 的單 GPU運行&#xff0c;支持多種下游任務和應用。例如生成會說話的虛擬形象視頻&#xff0…

DeepSeek-R1-0528:開源推理模型的革新與突破

一、 發布日期與背景 2025年5月29日&#xff0c;備受業界關注的DeepSeek推理模型DeepSeek-R1迎來重要更新——DeepSeek-R1-0528模型正式發布。此次更新采取了“靜默發布”策略&#xff0c;未提前預告&#xff0c;而是通過官方渠道&#xff08;官網、App、小程序&#xff09;及…