当前位置: 首页 > article >正文

LeetCode刷题---数组---840

矩阵中的幻方

https://leetcode.cn/problems/magic-squares-in-grid/submissions/598584907/

题目:

3 x 3 的幻方是一个填充有 从 1 到 9  的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。

给定一个由整数组成的row x col 的 grid,其中有多少个 3 × 3 的 “幻方” 子矩阵?

注意:虽然幻方只能包含 1 到 9 的数字,但 grid 可以包含最多15的数字。

示例 1:

输入: grid = [[4,3,8,4],[9,5,1,9],[2,7,6,2]
输出: 1
解释: 
下面的子矩阵是一个 3 x 3 的幻方:

而这一个不是:

总的来说,在本示例所给定的矩阵中只有一个 3 x 3 的幻方子矩阵。

示例 2:

输入: grid = [[8]]
输出: 0

提示:

  • row == grid.length
  • col == grid[i].length
  • 1 <= row, col <= 10
  • 0 <= grid[i][j] <= 15
自己的思路和代码:
思路:

        没啥好的办法,直接暴力(遍历开始!!!),从这个题开始转战c++了,直接调用库方便的多,自己写c实现的简直就是一坨啊。

代码:
int numMagicSquaresInside(int** grid, int gridSize, int* gridColSize) {
    if(gridSize<3) return 0;
    if(gridColSize[0]<3) return 0;

    int sum = 0;
    for(int i=0; i+2<gridSize; i++) {
        for(int j=0; j+2<gridColSize[i]; j++) {
            int temp[8];
            temp[0] = grid[i][j] + grid[i][j+1] + grid[i][j+2];
            temp[1] = grid[i+1][j] + grid[i+1][j+1] + grid[i+1][j+2];
            temp[2] = grid[i+2][j] + grid[i+2][j+1] + grid[i+2][j+2];
            temp[3] = grid[i][j] + grid[i+1][j] + grid[i+2][j];
            temp[4] = grid[i][j+1] + grid[i+1][j+1] + grid[i+2][j+1];
            temp[5] = grid[i][j+2] + grid[i+1][j+2] + grid[i+2][j+2];
            temp[6] = grid[i][j] + grid[i+1][j+1] + grid[i+2][j+2];
            temp[7] = grid[i+2][j] + grid[i+1][j+1] + grid[i][j+2];

            bool result = true;
            for(int k=1; k<8; k++) {
                if(temp[0] != temp[k]) {
                    result = false;
                    break;
                }
            }
            int idx[10] = {0};
            if(result) {
                result = false;
                int a = grid[i][j];
                bool standard = false;
                for(int p=i; p<i+3; p++) {
                    for(int q=j; q<j+3; q++) {
                        if(grid[p][q]>9 || grid[p][q]<1) {
                            standard =true;
                            break;
                        } else {
                            idx[grid[p][q]]++;
                            result = true;
                            // if(a!=grid[p][q]) {
                            //     result=true;
                            // }
                        }
                    }
                    if(standard) {
                        result = false;
                        break;
                    }
                }
            }
           // printf("%d \n", result);
            if(result) {
                for(int i=1; i<10; i++) {
                    if(idx[i]!=1) {
                        result = false;
                    }
                }
            } 
            if(result) sum++;
        }
    }
    //return sum;

    // printf("%d\n", gridSize);
    // for(int i=0; i<gridSize; i++) {
    //     for(int j=0; j<gridColSize[i]; j++) {
    //         printf("%d ", grid[i][j]);
    //     }
    //     printf("\n");
    // }
     return sum;
}


http://www.kler.cn/a/542179.html

相关文章:

  • DeepSeek投喂数据(训练AI)
  • 韶音科技:消费电子行业售后服务实现数字化转型,重塑客户服务体系
  • 现代前端开发的演进与未来趋势:从工具革新到技术突破
  • Python3 ImportError: cannot import name ‘XXX‘ from ‘XXX‘
  • 数据源和 sqlSessionFactory 配置
  • 激活函数篇 04 —— softmax函数
  • 力扣1448. 统计二叉树中好节点的数目
  • 机器学习实战(零基础到精通)
  • deepseek本地部署小白教程
  • JavaEE-前端与后台的搭建
  • 【Mastering Vim 2_01】开篇词:在 AI 时代持续深耕底层技术,做长期主义的坚定捍卫者
  • 4.混合推荐系统
  • 数据结构 单链表的模拟实现
  • CSDN 大模型 笔记
  • 关于浏览器缓存的思考
  • MAAS | DeepSeek本地部署如何开启联网搜索?
  • vue 134~152
  • win10右键使用IDEA打开
  • Kafka的架构解析
  • 【DeepSeek】在本地计算机上部署DeepSeek-R1大模型实战(完整版)
  • 语法备忘04:将 事件处理函数 绑定到 组件 的事件上
  • android 默认开启位置信息中WLAN扫描和蓝牙扫描
  • 文理医院预约挂号系统的设计与实现(代码+数据库+LW)
  • 查询语句来提取 detail 字段中包含 xxx 的 URL 里的 commodity/ 后面的数字串
  • 数据结构与算法-动态规划-状态机(股票问题,密码设计)
  • Python中是否有类似R语言中rds的功能,可将对象保存为文件?