zoukankan      html  css  js  c++  java
  • Hihocoder1662 : 查找三阶幻方([Offer收割]编程练习赛40)(暴力)

    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    给定一个N x M的矩阵,请你数一数其中有多少个3 x 3的子矩阵可以构成三阶幻方?  

    如果3 x 3的矩阵中每一行、每一列和两条对角线上的3个数之和都相等,我们就认为其构成一个三阶幻方。

    输入

    第一行包含两个整数N和M。(1 ≤ N, M ≤ 100)  

    以下N行M列包含一个N x M的矩阵A。(1 ≤ Aij ≤ 100)

    输出

    输出矩阵中包含多少个三阶幻方。

    样例输入
    5 5  
    4 9 2 1 8  
    3 5 7 6 2  
    8 1 6 9 3  
    2 3 3 6 9
    5 6 9 3 6
    样例输出
    2 
    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<cstring>
    using namespace std;
    int a[110][110];
    bool check(int u,int v)
    {
        int res=0,tmp;
        for(int  i=0;i<3;i++) res+=a[u][v+i];
        for(int i=1;i<3;i++) {
            tmp=0;
            for(int j=0;j<3;j++) tmp+=a[u+i][v+j];
            if(tmp!=res) return false;
        }
        for(int i=0;i<3;i++){
            tmp=0;
            for(int j=0;j<3;j++) tmp+=a[u+j][v+i];
            if(tmp!=res) return false;
        }
        tmp=a[u][v]+a[u+1][v+1]+a[u+2][v+2];
        if(tmp!=res) return false;
        tmp=a[u][v+2]+a[u+1][v+1]+a[u+2][v];
        if(tmp!=res) return false;
        return true;
    }
    int main()
    {
        int n,m,i,j,ans;
        while(~scanf("%d%d",&n,&m)){
            ans=0;
            for(i=1;i<=n;i++)
             for(j=1;j<=m;j++)
              scanf("%d",&a[i][j]);
              
            for(i=1;i<=n-2;i++)
             for(j=1;j<=m-2;j++)
              if(check(i,j)) ans++;
            
            printf("%d
    ",ans);
        }return 0;
    }
     
  • 相关阅读:
    常见web安全攻防总结
    想使用消息队列,先考虑下这些问题
    Nginx基本属性配置详解
    mysql 数据分析如何实现日报、周报、月报和年报?
    SQL优化
    SQL优化例子
    工厂模式,从第三方登录说起
    最常见 200+ 面试题答案全解析-面试必备
    使用sslsplit嗅探tls/ssl连接
    选择指定图层上的所有实体
  • 原文地址:https://www.cnblogs.com/hua-dong/p/8052489.html
Copyright © 2011-2022 走看看