首页 > 其他分享 >3378:练65.1 水洼个数

3378:练65.1 水洼个数

时间:2024-03-26 14:57:42浏览次数:25  
标签:水洼 matrix .. 3378 int WW ..... 65.1

3378:练65.1 水洼个数

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 370 通过数: 235
【题目描述】
有一块N×M的土地,雨后积起了水,有水标记为‘W’,干燥为‘.’。八连通的积水被认为是连接在一起的。请求出院子里共有多少水洼?

【输入】
第一行为N,M(1≤N,M≤100)。下面为N×M的土地示意图。
【输出】
一行,共有的水洼数。

【输入样例】
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
\br
\br

#include<bits/stdc++.h>
using namespace std;
/*
2024年3月26日14:44:21
*/
char matrix[101][101] = { 0 };

int a[8] = {-1,0,1,0,-1,1,1,-1};
int b[8] = {0,-1,0,1,-1,1,-1,1};

void func(int i,int j) {
	if('W' == matrix[i][j]) {
		matrix[i][j] = '.';
		for(int k = 0; k < 8; k++){
			func(i+a[k],j+b[k]);
		}
	}
}

int main() {
	int m,n;
	cin>>m>>n;
	int cnt = 0;
	for(int i = 1; i<=m; i++) {
		for(int j = 1; j<=n; j++) {
			cin>>matrix[i][j];
		}
	}
	for(int i = 1; i<=m; i++) {
		for(int j = 1; j<=n; j++) {
			if(matrix[i][j] == 'W'){
				func(i,j);
				cnt++; 
			}
		}
	}
	cout<<cnt; 
	return 0;
}

标签:水洼,matrix,..,3378,int,WW,.....,65.1
From: https://www.cnblogs.com/Andre/p/18096650

相关文章

  • 堆和优先队列(洛谷P3378)
    1.优先队列解决:优先队列:头文件和定义:#include<queue>template<classT,classContainer=vector<T>,classCompare=less<typenameContainer::value_type>>classpriority_queue;可表达为以下形式:priority_queue<Type,Container,Functional>type:即数据的类型Co......
  • 【2023潇湘夜雨】WIN11_Pro_Dev_23565.1000软件选装纯净版10.16
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_Dev_23565.1000。2.增加部分优化方案,手工精简部分较多。3.OS版本号为23565.1000。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.13.0.8》网卡版、运......
  • 洛谷 P3378 【模板】堆
    siftup模板当然还得有siftdown模板“稍”加调试,就可以得到模板代码#include<bits/stdc++.h>usingnamespacestd;intn,op,sl=0,h[1000010];voidjh(intx,inty)//交换{intz=h[x];h[x]=h[y];h[y]=z;}voidsiftu(inti)//siftup{boolf=true;......
  • P3378 【模板】二叉堆
    [洛谷]P3378【模板】堆方法一手写堆最小堆插入从新增的最后一个结点的父结点开始,用要插入元素向下过滤上层结点(相当于要插入的元素向上渗透)voidsiftdown(inti)//传入一个需要向下调整的结点编号i,这里传入1,即从堆的顶点开始向下调整{intt,flag=0;//flag用来标......
  • 【LOJ 3378】点格棋(DP)(推论)
    点格棋题目链接:LOJ3378题目大意有一个(n+1)*(m+1)的格点组成的网格,然后两个人轮流操作,选两个相邻(距离为1)且没有连边的点对连一个竖直或者水平的线段。然后如果一个......
  • P3378 【模板】堆
    P3378【模板】堆【模板】堆题目描述给定一个数列,初始为空,请支持下面三种操作:给定一个整数x,请将x加入到数列中。输出数列中最小的数。删除数列中最小的数(如果有......
  • P3378 【模板】堆
    P3378【模板】堆题目简述给定三个操作,求数列中最小的数,删除数列中最小的数,插入一个新的数思路板子题没什么好说,用stl自带的优先队列很好写,但手写的也要掌握。建议......