欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > [GESP202503 四级] 二阶矩阵c++

[GESP202503 四级] 二阶矩阵c++

2025/5/5 15:21:38 来源:https://blog.csdn.net/D_31415926/article/details/147701499  浏览:    关键词:[GESP202503 四级] 二阶矩阵c++

题目描述

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

小 A 认为一个 2×2 的矩阵 D 是好的,当且仅当 D_{1,1}\times D_{2,2}=D_{1,2}\times D_{2,1}。其中 D_{i,j} 表示矩阵 D 的第 i 行第 j 列的元素。

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

输入

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

接下来 n 行,每行 m 个整数 A_{i,1} ,A_{i,2},...,A_{i,m}

对于所有测试点,保证 1≤n≤500,1≤m≤500,−100≤A_{i,j}≤100

输出

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

样例输入

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

样例输出

2

样例解释

样例中好的子矩阵如下:

分析

只需循环编号部分作为2×2矩阵的左上角顶点(其余无法形成完整的2×2矩阵),所以只需循环到n-1与m-1

D_{1,1}\times D_{2,2}=D_{1,2}\times D_{2,1}放在这里要变化为:

a[i][j]*a[i+1][j+1]==a[i][j+1]*a[i+1][j]

示例代码:

#include<bits/stdc++.h>
using namespace std;
int main(){long long n,m,a[501][501],s=0;cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}for(int i=1;i<n;i++){for(int j=1;j<m;j++){if(a[i][j]*a[i+1][j+1]==a[i][j+1]*a[i+1][j]){s++;}}}cout<<s;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词