七月集训---数组

因为学校12月份要举办蓝桥杯的选拔赛,所以参加英雄哥的《七月集训》,想通过训练能让自己掌握算法的一些知识的同时,也为以后的工作做准备,学到知识最重要,得不得奖反倒是其次了。话不多说,直接进入正题。

第一天的集训的主题主是学习过程中接触最早,也是比较容易理解的数组。

         2319.判断一个矩阵是否为X矩阵

  题目描述:

如果一个正方形矩阵满足下述 全部 条件,则称之为一个 X 矩阵 :

矩阵对角线上的所有元素都 不是 0
矩阵中所有其他元素都是 0
给你一个大小为 n x n 的二维整数数组 grid ,表示一个正方形矩阵。如果 grid 是一个 X 矩阵 ,返回 true ;否则,返回 false 。

 题目思路:首先我们得清楚矩阵不单单是有主对角线,还有一条副对角线,自己在做题的时候忘了加上副对角线的判断,从而导致解题出错。如果我们令j分别代表矩阵的横纵坐标,那么则有:

主对角线:i = j;

而副对角线 i + j=矩阵的最大阶数

 代码方面:直接双重循环,满足主对角线或者副对角线的点值不能等于0,若不满足,则值不可以为非零。

解题代码:

bool checkXMatrix(int** grid, int gridSize, int* gridColSize){
    int i, j;
    int res = 0;  //默认标识符为0,若有不符合条件的则变为1
    for(i=0; i<gridSize; i++)  //检测主对角线与副对角线
    {
        for(j=0; j<gridSize; j++)
        {
            if(i == j || i+j == gridSize-1)  //主对角线和副对角线的判断条件
            {
                if(grid[i][j] == 0)
                res = 1;
                
            }
            else
            {
                if(grid[i][j] != 0)
                res = 1;
                
            }
        }
    }
  //标识符为0代表是X矩阵,返回True,否则返回false
    if(res == 0)
        return true;
    else
        return false;
        
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值