A28417. 二阶矩阵
填空题
较难
知识点
题目描述
二阶矩阵
题目描述
小 A 有一个n行m列的矩阵A。
小 A 认为一个2×2的矩阵D是好的,当且仅当D1,1×D2,2=D1,2×D2,1。其中Dij表示矩阵D的第i行第j列
的元素。
小 A 想知道 A中有多少个好的子矩阵。
输入格式
第一行,两个正整数n,m 。
接下来n行,每行m个整数Ai,1,Ai,2,...,A i,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 <bits/stdc++.h>
using namespace std;
const int N = 505;
int n, m;
int a[N][N];
int ans;
int main() {
scanf("%d%d", &n, &m);
assert(1 <= n && n <= 500 && 1 <= m && m <= 500);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++) {
scanf("%d", &a[i][j]);
assert(-100 <= a[i][j] && a[i][j] <= 100);
}
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 + 1][j] * a[i][j + 1])
ans++;
printf("%d\n", ans);
return 0;
}
上一题
下一题