1 条题解

  • 0
    @ 2026-1-28 14:40:06
    #include <bits/stdc++.h>
    using namespace std;
    // [1] arr:存储输入的n行m列矩阵
    int arr[1000][1000];
    
    int main(){
        int n,m; // [2] n:矩阵的行数,m:矩阵的列数
        cin>>n>>m; // [3] 读取矩阵的行数和列数
    
        // [4] 读取矩阵的n行m列元素,存入二维数组arr
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
                cin>>arr[i][j];
    
        int sum=0; // [5] sum:统计满足条件的2×2子矩阵数量
    
        // [6] 遍历矩阵中每个可能的2×2子矩阵的左上角位置(i,j)
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                // [7] 检查当前位置右下角是否仍在矩阵范围内(保证能构成2×2子矩阵)
                if(i+1<n && j+1<m ){
                    // [8] 判断该2×2子矩阵是否满足条件:D11*D22 == D12*D21
                    if(arr[i][j]*arr[i+1][j+1] == arr[i+1][j]*arr[i][j+1]){
                        sum++; // 满足条件则计数加1
                    }
                }
            }
        }
    
        cout<<sum; // [9] 输出满足条件的子矩阵总数
        return 0;
    }
    
    • 1

    信息

    ID
    949
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者