题目背景

对应的选择、判断题:试题 - GESP 202503 C++ 四级 - 洛谷有题

题目描述

小 A 有一个 n 行 m 列的矩阵 A。

小 A 认为一个 2×2 的矩阵 D 是好的,当且仅当 D1,1​×D2,2​=D1,2​×D2,1​。其中 Di,j​ 表示矩阵 D 的第 i 行第 j 列的元素。

小 A 想知道 A 中有多少个好的子矩阵。

输入格式

第一行,两个正整数 n,m。

接下来 n 行,每行 m 个整数 Ai,1​,Ai,2​,…,Ai,m​。

输出格式

一行,一个整数,表示 A 中好的子矩阵的数量。

输入输出样例

输入 #1复制

3 4
1 2 1 0
2 4 2 1
0 3 3 0

输出 #1复制

2

说明/提示

样例解释

样例中好的子矩阵如下:

数据范围

对于所有测试点,保证 1≤n≤500,1≤m≤500,−100≤Ai,j​≤100

代码实现:

#include <iostream>
#include <vector>
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];
        }
    }
    long long ans=0;
    for(int i=0;i<=n-2;i++)
    {
        for(int j=0;j<=m-2;j++)
        {
            long long d11 = a[i][j];
            long long d12 = a[i][j+1];
            long long d21 = a[i+1][j];
            long long d22 = a[i+1][j+1];
            if(d11 * d22 == d12 * d21)
                ans++;
        }
    }
    cout<<ans<<endl;
    return 0;
}

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐