1751: [Usaco2005 qua]Lake Counting
1751: [Usaco2005 qua]Lake Counting
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 190 Solved: 150
[Submit][Status][Discuss]
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
OUTPUT DETAILS:
There are three ponds: one in the upper left, one in the lower left,
and one along the right side.
HINT
Source
题解:直接萌萌哒DFS秒之,经典的普及组难度基础题,水水哒
(Tip:38行的dfs(a1,a2)貌似只有这样写在本机才能对,提交也能A;很神奇的是如果直接写dfs(i,j)的话在本机就会出现带入的是(1,1)结果进去的是(2,2)QAQ,然后各种神奇跪OTL,更神奇的是这个在本机都跪成狗的程序居然submit之后也能A(QAQ),求神犇解释)
1 var 2 i,j,k,l,m,n,a1,a2:longint; 3 c1:char; 4 a:array[0..200,0..200] of longint; 5 procedure dfs(x,y:longint);inline; 6 begin 7 a[x,y]:=0; 8 if a[x-1,y-1]=1 then dfs(x-1,y-1); 9 if a[x,y-1]=1 then dfs(x,y-1); 10 if a[x+1,y-1]=1 then dfs(x+1,y-1); 11 if a[x-1,y+1]=1 then dfs(x-1,y+1); 12 if a[x,y+1]=1 then dfs(x,y+1); 13 if a[x+1,y+1]=1 then dfs(x+1,y+1); 14 if a[x-1,y]=1 then dfs(x-1,y); 15 if a[x+1,y]=1 then dfs(x+1,y); 16 end; 17 begin 18 readln(n,m); 19 fillchar(a,sizeof(a),0); 20 for i:=1 to n do 21 begin 22 for j:=1 to m do 23 begin 24 read(c1); 25 case c1 of 26 'W':a[i,j]:=1; 27 '.':a[i,j]:=0; 28 end; 29 end; 30 readln; 31 end; 32 l:=0; 33 for i:=1 to n do 34 for j:=1 to m do 35 if a[i,j]=1 then 36 begin 37 a1:=i;a2:=j; 38 inc(l);dfs(a1,a2); 39 end; 40 writeln(l); 41 readln; 42 end.
分类:
Bzoj
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)