当前位置: 首页 > news >正文

week3-[二维数组]小方块

week3-[二维数组]小方块

题目描述

如果四个数 a,b,c,da,b,c,da,b,c,d 可以分成两组,每组两个数,满足每组里面的两个数一样,那么称这四个数是好的。

比如,2,5,2,52,5,2,52,5,2,5 是好的,因它满足两组:222222 两个数一样,555555 两个数一样。

给定一个 nnnmmm 列的二维数组 ai,ja_{i,j}ai,j,有多少对 x,yx,yx,y 满足 ax,y,ax+1,y,ax,y+1,ax+1,y+1a_{x,y}, a_{x+1,y}, a_{x,y+1}, a_{x+1,y+1}ax,y,ax+1,y,ax,y+1,ax+1,y+1 是好的?

输入格式

输入共 n+1n + 1n+1 行。

111222 个正整数 n,mn,mn,m

接下来 nnn 行,每行 mmm 个用空格隔开的正整数 ai,ja_{i,j}ai,j

输出格式

输出共 111111 个整数表示答案。

样例 #1

样例输入 #1

2 4
1 2 3 2
2 3 2 3

样例输出 #1

2

提示

样例解释 111

x=1,y=1x = 1, y = 1x=1,y=1:四个数分别为 1,2,2,31,2,2,31,2,2,3,不是好的。

x=1,y=2x = 1, y = 2x=1,y=2:四个数分别为 2,3,3,22,3,3,22,3,3,2,是好的。

x=1,y=3x = 1, y = 3x=1,y=3:四个数分别为 3,2,2,33,2,2,33,2,2,3,是好的。

不能有 x=2x = 2x=2 或者 y=4y = 4y=4,因为这样的话就没有四个数了。

数据范围

对于所有数据,1≤n,m,ai,j≤1001\leq n,m,a_{i,j}\leq 1001n,m,ai,j100

这题是典型的 2×2 小方块匹配问题。核心是判断 四个数是否能分成两组,每组两个数相等


🔎 分析

1️⃣ 判断“好”的条件

设四个数为 a,b,c,da, b, c, da,b,c,d,它们是“好”的有几种可能:

  1. 两两相等
    • (a == b && c == d)
    • (a == c && b == d)
    • (a == d && b == c)

如果满足其中任意一种,就是好的。

注意顺序不重要,四个数中每组两个相等即可。


2️⃣ 枚举所有 2×2 方块

  • 遍历 i = 0..n-2
  • 遍历 j = 0..m-2
  • 四个数:a[i][j], a[i+1][j], a[i][j+1], a[i+1][j+1]
  • 判断是否好 → 累加计数

🖥️ C++ 实现

#include <bits/stdc++.h>
using namespace std;int main() {int n,m;cin >> n >> m;vector<vector<int>> a(n, vector<int>(m));for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin >> a[i][j];int cnt = 0;for(int i=0;i<n-1;i++){for(int j=0;j<m-1;j++){int x1 = a[i][j], x2 = a[i+1][j], x3 = a[i][j+1], x4 = a[i+1][j+1];if ((x1==x2 && x3==x4) ||(x1==x3 && x2==x4) ||(x1==x4 && x2==x3)) {cnt++;}}}cout << cnt << endl;return 0;
}
http://www.dtcms.com/a/343675.html

相关文章:

  • 靶机 - SAR
  • UVa1472/LA4980 Hanging Hats
  • C++的指针和引用:
  • C++部署Yolov5模型流程记录
  • flutter geolocator Android国内定位失败问题解决
  • Redis事务全解析:从秒杀案例看原子操作实现
  • C#_接口设计:角色与契约的分离
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day10
  • 树莓派采集、计算机推理:基于GStreamer的YOLOv5实现方案
  • Codeforces Round 1043 (Div.3)
  • AI生成技术报告:GaussDB与openGauss的HTAP功能全面对比
  • Vue 插槽(Slots)全解析2
  • 大数据毕业设计推荐:基于Hadoop+Spark的手机信息分析系统完整方案
  • 使用GMail API 发送邮箱
  • 在Kubernetes中部署一个单节点Elasticsearch
  • 集成电路学习:什么是Camera Calibration相机标定
  • Effective C++ 条款55:熟悉Boost库
  • 8.21-8.22网络编程——词典
  • 集成电路学习:什么是Template Matching模版匹配
  • C++创建一个空类的时候,编译器会自动生成哪些函数了
  • 数据处理与统计分析 —— apply自定义函数
  • lesson44:Redis 数据库全解析:从数据类型到高级应用
  • 鸿蒙开发中的List组件详解
  • spring之自定义拦截器:HandlerInterceptor 控制请求生死权
  • Java微服务开发:从入门到精通
  • 证书只是手段:把学习变成可复用能力的路线图
  • FPGA 在情绪识别领域的护理应用(三)
  • gRPC 与 HTTP 性能对比分析
  • C++浅拷贝和深拷贝区别
  • 【华为OD-C卷-019 对称字符串 100分(python、java、c++、js、c)】