可爱的题面君~~

个人感觉这题还是很简单的,就是一个完全不加工的找联通块个数

个人解题思路是先读入,然后循环一遍,遇到水就dfs,并把这个w所在的联通块“删除”,并在答案上加一

最后输出答案

具体注释看程序:::

 #include<cmath>
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,ans;
bool a[][];//我用布尔数组,反正就两种情况
void dfs(int x,int y){//dfs
a[x][y]=false;//删除连通块
if(x+<=n&&a[x+][y])dfs(x+,y);//如果下面是水(。。。),往下搜
if(y+<=m&&a[x][y+])dfs(x,y+);//如果左边是水,往左搜,注意y是与m比较,千万不要把m,n弄混
if(x->=&&a[x-][y])dfs(x-,y);//往上搜
if(y->=&&a[x][y-])dfs(x,y-);//往右搜
if(x+<=n&&y+<=m&&a[x+][y+])dfs(x+,y+);//往左上搜
if(x+<=n&&y->=&&a[x+][y-])dfs(x+,y-);//往右上搜
if(x->=&&y+<=m&&a[x-][y+])dfs(x-,y+);//往左下搜
if(x->=&&y->=&&a[x-][y-])dfs(x-,y-);//往右下搜
}
void sc(){//这是我个人调试时用的程序,看被删除的连通块是哪一个,有兴趣的同学可以看看~~~
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(a[i][j])cout<<"w";
else cout<<".";
}
cout<<endl;
}
}
int main(){//主函数
cin>>n>>m;//读入
for(int i=;i<=n;i++){
string x;//定义字符串,字符串虽然是单独的一个变量,但可以直接用下标访问
cin>>x;//读入连续一段char型的字符串,比较方便
for(int j=;j<=m;j++){
if(x[j-]=='.')a[i][j]=false;//注意,x是从下标为0的地方开始读的,如果不是水块,就赋值否
else a[i][j]=true;//否则为是
}
}
for(int i=;i<=n;i++){//模拟
for(int j=;j<=m;j++){
if(a[i][j]){//如果是水
//cout<<i<<' '<<j<<endl;个人调试所用
dfs(i,j);//删除连通块
//sc();个人调试所用
ans++;//答案数加一
}
}
}
cout<<ans<<endl;//输出答案
return ;
}//完美结束 最后,祝大家天天开心,编程顺利(。。。)

新人开博鼓励一下吧~~~

P1596 【[USACO10OCT]湖计数Lake Counting】的更多相关文章

  1. 洛谷 P1596 [USACO10OCT]湖计数Lake Counting

    题目链接 https://www.luogu.org/problemnew/show/P1596 题目描述 Due to recent rains, water has pooled in vario ...

  2. 洛谷——P1596 [USACO10OCT]湖计数Lake Counting

    P1596 [USACO10OCT]湖计数Lake Counting 题目描述 Due to recent rains, water has pooled in various places in F ...

  3. 洛谷P1596 [USACO10OCT]湖计数Lake Counting

    https://www.luogu.org/problemnew/show/P1596 连通块水题... 大体思路是找到是水坑的坐标然后就开始不断递归,往八个方向搜,把连在一起的都标记一遍直到找不到为 ...

  4. Luogu P1596 [USACO10OCT]湖计数Lake Counting

    题目描述 Due to recent rains, water has pooled in various places in Farmer John's field, which is repres ...

  5. $P1596 [USACO10OCT]湖计数Lake Counting$

    \(problem\) 其实这题吧\(DFS\)好写一点(大雾 所以就不讲\(DFS\)了 em \(BFS\)的话 主要是 判重. 方向. 队列.(没了吧 至于位置 用两个队列?还是\(pair\) ...

  6. [USACO10OCT]湖计数Lake Counting 联通块

    题目描述 Due to recent rains, water has pooled in various places in Farmer John's field, which is repres ...

  7. Poj2386 Lake Counting (DFS)

    Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 49414   Accepted: 24273 D ...

  8. POJ 之2386 Lake Counting

    Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20003   Accepted: 10063 D ...

  9. 【POJ - 2386】Lake Counting (dfs+染色)

    -->Lake Counting 直接上中文了 Descriptions: 由于近日阴雨连天,约翰的农场中中积水汇聚成一个个不同的池塘,农场可以用 N x M (1 <= N <= ...

随机推荐

  1. mysql 主从 Last_IO_Errno错误代码说明

    Last_IO_Errno错误代码说明:  1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件 ...

  2. 写一个基于TCP协议套接字,服务端实现接收客户端的连接并发

    ''' 写一个基于TCP协议套接字,服务端实现接收客户端的连接并发 ''' client import socket import time client = socket.socket() clie ...

  3. 【HDU6709】Fishing

    题目大意:有 N 条鱼,每条鱼都有钓鱼和烤鱼的时间,钓鱼的时间均相同,每条鱼都有自己的烤鱼时间,一次只能烤一条鱼,且不能间断.现要求通过某种顺序将所有的鱼钓上来并烤完,求最小的时间是多少. 题解: 对 ...

  4. 原型模式故事链(5)--JS变量作用域、作用域链、闭包

    上一章 JS执行上下文.变量提升.函数声明 传送门:https://segmentfault.com/a/11... 本次我们主要讲讲变量作用域和闭包变量作用域:顾名思义:变量起作用的范围.变量分为全 ...

  5. python fc21~fc29踩坑记录

    最近在公司的linux fc21上安装python和anaconda, 直接mintmenu给挂掉了. 真是弱爆了. 后来,升级终于来了, 升到了fc29.好,再看看, python2.7还在, py ...

  6. 关于css阴影和浮动

    盒子阴影box-shadow box-shadow:0 0 1px #000 inset; 水平  垂直   模糊  颜色 : [1] inset代表框内阴影,不加inset代表框外阴影 [2]第1个 ...

  7. 命令方式 搭建 (简易)Maven项目

    原料:1.配好的Maven环境变量    2.c m d命令 win  + r  输入 cmd 切换到此项目所要存在的位置 使用命令创建文件夹 切换 到 maven_demo中  输入 cd mave ...

  8. grunt-contrib-cssmin CSS压缩以及合并

    grunt-contrib-cssmin:压缩以及合并CSS文件 安装插件:npm install grunt-contrib-cssmin --save-dev 不设置compatibility与n ...

  9. nodejs之express入门

    首先安装nodejs,官网下载安装包直接安装, 由于node自带npm,所以npm命令直接即可使用 打开cmd,使用npm install -g express-generator安装express ...

  10. linux运维、架构之路-K8s应用

    一.Deployment         k8s通过各种Controller管理Pod的生命周期,为了满足不同的业务场景,k8s提供了Deployment.ReplicaSet.DaemonSet.S ...