洛谷P6866 [COCI2019-2020#5] Emacs

题目描述

给定一个 n×m 的只含有 .* 的矩阵。

矩阵中 * 形成一些不重叠的长方形。它们不在边缘或顶点接触。

求长方形有多少个?

输入格式

第一行:两个正整数 n 和 m。

以下 n 行:表示题目描述中的矩阵。矩阵只含有 .*

输出格式

一行一个非负整数,你的答案。

输入输出样例

输入 #1

复制代码
6 7
***....
***..**
.....**
.***.**
.***...
.***...

输出 #1

复制代码
3

输入 #2

复制代码
3 3
*.*
...
*.*

输出 #2

复制代码
4

输入 #3

复制代码
1 10
.*.**.***.

输出 #3

复制代码
3

说明/提示

数据范围

  • 对于 10pts 的数据,矩阵中每个长方形只含一个 *
  • 对于另外 15pts 的数据,保证n=1。
  • 对于所有的数据,1≤n,m≤100。

说明

题目译自 COCI2019-2020 CONTEST #5 T1 Emacs ,译者 90693

要找长方形其实只用看顶点,如果一个点的上面和左边都是".",那么这个点就一定是某个长方形的左上顶点,同时我把输入矩阵的周围都打成".",可以避免边界问题

废话不多说,直接上code:

复制代码
#include <bits/stdc++.h>
using namespace std;
int main() {
	int i,j,n,m,cnt=0;
	char a[105][105];
	cin>>n>>m;
	for(i=0;i<=n+1;i++){
		for(j=0;j<=m+1;j++){
			if(i==0||j==0||i==n+1||j==m+1){//围出边界
				a[i][j]='.';
			}
		}
	}
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++){
		    if(a[i-1][j]=='.'&&a[i][j-1]=='.'&&a[i][j]=='*'){//判断,必须上面和左边都是".",并且这个点是"*"
		    	cnt++;//统计
			}
		}
	}
	cout<<cnt;
    return 0;
}

喜欢就点个赞吧!

相关推荐
郝学胜-神的一滴12 小时前
《机器学习》经典教材全景解读:周志华教授匠心之作的技术深探
数据结构·人工智能·python·程序人生·机器学习·sklearn
平哥努力学习ing12 小时前
《数据结构》-第八章 排序
数据结构·算法·排序算法
CoovallyAIHub12 小时前
为AI装上“纠偏”思维链,开源框架Robust-R1显著提升多模态大模型抗退化能力
深度学习·算法·计算机视觉
小棠师姐12 小时前
随机森林原理与实战:如何解决过拟合问题?
算法·机器学习·随机森林算法·python实战·过拟合解决
范纹杉想快点毕业12 小时前
欧几里得算法与扩展欧几里得算法,C语言编程实现(零基础全解析)
运维·c语言·单片机·嵌入式硬件·算法
f***241112 小时前
Bug悬案:技术侦探的破案指南
算法·bug
Swift社区12 小时前
LeetCode 472 连接词
算法·leetcode·职场和发展
CoovallyAIHub12 小时前
YOLO-Maste开源:首个MoE加速加速实时检测,推理提速17.8%!
深度学习·算法·计算机视觉
清铎12 小时前
leetcode_day13_普通数组_《绝境求生》
数据结构·算法
hetao173383713 小时前
2026-01-09~12 hetao1733837 的刷题笔记
c++·笔记·算法