題目描述
小 A 有一個?n?行?m?列的矩陣?A。
小 A 認為一個?2×2?的矩陣?D?是好的,當且僅當 。其中?
表示矩陣?D?的第?i?行第?j?列的元素。
小 A 想知道?A?中有多少個好的子矩陣。
輸入
第一行,兩個正整數?n,m。
接下來?n?行,每行?m?個整數 。
對于所有測試點,保證?1≤n≤500,1≤m≤500,?100≤≤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
而放在這里要變化為:
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;
}