POJ 2386 Lake Counting

鏈接:http://poj.org/problem?id=2386


Lake Counting

Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 24263 Accepted: 12246

Description

Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. Each square contains either water ('W') or dry land ('.'). Farmer John would like to figure out how many ponds have formed in his field. A pond is a connected set of squares with water in them, where a square is considered adjacent to all eight of its neighbors.

Given a diagram of Farmer John's field, determine how many ponds he has.

Input

* Line 1: Two space-separated integers: N and M

* Lines 2..N+1: M characters per line representing one row of Farmer John's field. Each character is either 'W' or '.'. The characters do not have spaces between them.

Output

* Line 1: The number of ponds in Farmer John's field.


Sample Input

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

Sample Output

3

Hint

OUTPUT DETAILS:

There are three ponds: one in the upper left, one in the lower left,and one along the right side.

Source

USACO 2004 November


大意——給你一個n*m的矩形網格。每一個格子里面要么是‘W’。要么是‘.’,它們分別表示水和旱地。

如今要你計算出有多少個池塘。

每一個池塘由若干個水組成,水能連接的方向有8個,僅僅要是能連接到的水都屬于一個池塘。


思路——一個簡單的DFS題。我們將所有的網格所有遍歷一次,假如我們找到一個池塘的源頭,就能夠進行一次計數。而且將眼下找到的池塘源頭標記為‘.’,那么下一次就不會反復訪問了。再從八個方向進行深搜,將能到達相鄰的‘W’所有標記,以免反復訪問。這樣最后得到的計數就是答案。


復雜度分析——時間復雜度:O(n*m),空間復雜度:O(n*m)


附上AC代碼:


#include <iostream>
#include <cstdio>
#include <string>
#include <cmath>
#include <iomanip>
#include <ctime>
#include <climits>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <set>
#include <map>
//#pragma comment(linker, "/STACK:102400000, 102400000")
using namespace std;
typedef unsigned int li;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const double pi = acos(-1.0);
const double e = exp(1.0);
const double eps = 1e-8;
const int maxn = 105;
const int dir[8][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}, {-1, -1}, {1, -1}, {-1, 1}, {1, 1}}; // 8個方向
int n, m; // 矩形的行列
char mat[maxn][maxn]; // 矩形void dfs(int x, int y); // 深度優先搜索int main()
{ios::sync_with_stdio(false);while (~scanf("%d%d", &n, &m)){int cnt = 0;for (int i=0; i<n; i++)scanf("%s", mat[i]);for (int i=0; i<n; i++)for (int j=0; j<m; j++)if (mat[i][j] == 'W'){ // 找到池塘源頭,計數并深搜cnt++;dfs(i, j);}printf("%d\n", cnt);}return 0;
}void dfs(int x, int y)
{mat[x][y] = '.'; // 訪問過了。標記for (int i=0; i<8; ++i) // 從八個方向找相鄰的if (x+dir[i][0]>=0 && x+dir[i][0]<n && y+dir[i][1]>=0 &&y+dir[i][1]<m && mat[x+dir[i][0]][y+dir[i][1]]=='W')dfs(x+dir[i][0], y+dir[i][1]); // 找到相鄰的,繼續深搜
}


轉載于:https://www.cnblogs.com/liguangsunls/p/7054945.html

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

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

相關文章

計算機窗口顏色不能自定義,用RBG顏色設置自定義顏色

這個是Mac自帶的測色計快捷鍵shift command c即可復制RBG格式的顏色#DD0000 這個是csdn 的logo里的紅色我們得到的是十六位顏色代碼但是UIColor()只有這幾種初始化方式init(white: CGFloat, alpha: CGFloat)init(hue: CGFloat, saturation: CGFloat, brightness: CGFloat, al…

http協議和瀏覽器緩存問題

HTTP是超文本傳輸協議。 HTTP是一個應用層協議&#xff0c;由請求和響應構成&#xff0c;是一個標準的客戶端服務器模型。HTTP是一個無狀態的協議。 轉載于:https://www.cnblogs.com/hodgson/p/6128003.html

Spring3國際化和本地化

我最近想將Spring 3提供的國際化和本地化功能添加到我當前的項目之一中。 我瀏覽了Spring文檔&#xff0c;然后在Internet上搜索以找到一些資源。 但是我找不到能夠滿足客戶要求的資源。 大多數教程都像hello world應用程序&#xff0c;它提供了基本的理解。 即使是spring文檔&…

h3c交換機 查看二層交換機端口ip_【分享】項目中如何選到稱心如意的交換機?...

項目中如何選擇交換機&#xff1f;這七個步驟不能少如何選擇交換機&#xff1f;如何根據項目確定網絡結構&#xff1f;我們在做大部分項目都有這樣的疑問&#xff0c;交換機做為弱電中最常用的設備之一&#xff0c;關于他的使用與選擇&#xff0c;不得不知&#xff0c;本期我們…

SSH中一些典型的問題

struts2 1-1&#xff1a;為什么每次請求都要創建一個Action對象&#xff1f; 是出于對線程安全的考慮&#xff0c;每個request都不會相互影響 1-2&#xff1a;ModelDriven攔截器的配置中refreshModelBeforeResult解決了什么問題&#xff1f; 先把舊的model對象從ValueStack…

為什么計算機連接不上打印機,為什么電腦連接打印機后卻沒反應

2013-12-12我的筆記本怎么連接不了打印機 顯示是這樣的好&#xff1a;以下方法供您參考&#xff1a;看一下您的系統服務中這兩個(最上面 和最下面的是不是沒啟用)總之是您的局域網連接沒有連接上&#xff0c;要不在網上鄰居里您會看到其他的機器的&#xff0c;這是搜到的解決的…

JavaFX 2.0布局窗格– BorderPane

BorderPane非常適合開發更復雜的布局。 通常&#xff0c; BorderPane提供五個不同的區域&#xff1a;頂部&#xff0c;右側&#xff0c;底部&#xff0c;左側和中央。 您可以通過調用setTop/setBottom/set…方法將Node設置到每個區域。 這種方法使開發“類似于網站”的應用程序…

頁面排版簡單樣式

頁面排版簡單樣式demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml" xml:lang"zh-cn"> &l…

JavaWeb基礎(jsp初識)

jsp, java server page jsp頁面是在服務器上運行的一個頁面 動態網頁 與后臺有數據交互的頁面 與其他語言的區別: jsp 使用java語言進行開發, 安全性高, 適合大型項目, 企業級的文本應用分布式項目, 服務器集群, hadoop asp.net 使用c#, .Net平臺, 簡單易用, 因為不開源, 所以安…

nao機器人拆解_一些機器人硬件網站

以前收集過一些網站&#xff0c;偏機器人機械結構、硬件、參數(也有模擬或算法)。在 https://www.zhihu.com/question/19826366 也夾雜著一些網址&#xff0c;但是有些網址沒有深入的內容&#xff0c;排版也不好&#xff0c;所以 在這里編輯成一個列表&#xff0c;方便歸檔。歡…

心電圖是模擬計算機嗎,心電圖儀

心電圖儀是由威廉愛因托芬(W. Einthoven,1860-1927)發明的。 什么是心電圖儀(機)M311986 心電圖儀能將心臟活動時心肌激動產生的生物電信號(心電信號)自動記錄下來&#xff0c;為臨床診斷和科研常用的醫療電子儀器。國內一般按照記錄器輸出道數劃分為&#xff1a;單道、三道、六…

從Java 8啟動項目拼圖?

在馬克雷因霍爾德 &#xff08; Mark Reinhold &#xff09;在他的《 項目拼圖&#xff1a;火車晚點 》一文中提出“將項目拼圖推遲到Java 9的下一個發行版中”。 他解釋了這樣做的原因&#xff1a;“仍然存在一些重大的技術挑戰”&#xff0c;并且“沒有足夠的時間來進行廣泛的…

ChannelOption用到的socket的標準參數

ChannelOption.SO_BACKLOG, 1024 BACKLOG用于構造服務端套接字ServerSocket對象&#xff0c;標識當服務器請求處理線程全滿時&#xff0c;用于臨時存放已完成三次握手的請求的隊列的最大長度。如果未設置或所設置的值小于1&#xff0c;Java將使用默認值50。 ChannelOption.SO_K…

cbrt c語音_isgraph - [ C語言中文開發手冊 ] - 在線原生手冊 - php中文網

在頭文件中定義int isgraph(int ch);檢查給定字符是否具有圖形表示形式&#xff0c;即它是數字(0123456789)&#xff0c;大寫字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ)&#xff0c;小寫字母(abcdefghijklmnopqrstuvwxyz)或標點符號(!"#$%&()*,-./:;<>?[\]^_{|}~)或特定…

計算機的內存和cpu,內存與CPU二者之間的關系_Intel服務器CPU_服務器產業-中關村在線...

“在一起&#xff0c;在一起”&#xff0c;相信這也是很多人希望的結果&#xff0c;無論是從技術角度&#xff0c;還是從空間角度&#xff0c;似乎二者都有著很多理由被放在一起完成任務。但是&#xff0c;二者為何一直沒有“在一起”呢&#xff1f;也許這句歌詞可以回答原因&a…

JUnit,Logback,帶有Maven 3的Maven

在本系列中&#xff0c;我們已經學習了建立基本的Spring MVC應用程序并學習了如何在Spring MVC中處理表單 。 現在該討論更多涉及的主題了。 但是&#xff0c;在我們涉足更深的領域之前&#xff0c;讓我們先進行一些基礎設置。 單元測試 我不是TDD傳播者。 我在那里說了。 我從…

Gradle中的buildScript,gradle wrapper,dependencies等一些基礎知識

就想收藏一篇好文&#xff0c;哈哈&#xff0c;無他 Gradle中的buildScript代碼塊 - 黃博文 然后記錄一些gradle的基礎知識&#xff1a; 1.gradle wrapper就是對gradle的封裝&#xff0c;可以理解為項目內部內置了gradle 2.dependencies的參數 上官方參數表https://docs.gradle…

phonegap工程中修改app的名字

針對phonegap比較高的版本&#xff0c;我的是6.4.0。 在phonegap工程中&#xff0c;當添加了iOS和android平臺或多個平臺后&#xff0c;工程進行了開發&#xff0c;然后覺得app的名字想修改一下&#xff08;比如在手機上顯示的app名字&#xff0c;或者通過ipa導入安裝或者apk包…

ac ap方案 華為_華為無線_AC+AP小型無線網絡配置實驗_v1

【如果在實驗中有什么疑問&#xff0c;歡迎關注微信公眾號“IT后院”給我留言&#xff0c;我會抽空回答你的問題】華為無線-ACAP小型無線網絡配置實驗_v1網絡結構圖&#xff1a;步驟一&#xff1a;配置網絡連通性SW:interface Vlanif100ip address 192.168.0.1 255.255.255.0in…

css類選擇器或邏輯,深入理解CSS中選擇器的邏輯處理

在過去的很長一段時間中&#xff0c;我們都說 CSS 是不帶有任何邏輯的&#xff0c;意思是在 CSS 中沒有控制流&#xff0c;也沒有某種類似于其他編程語言的方式來組織 CSS。CSS 天生缺乏邏輯性的問題導致了預處理器的出現。然而業界卻對 CSS 預處理器褒貶不一&#xff0c;支持預…