【牛客刷题】每日一练——判断双对称方阵

简介: 【牛客刷题】每日一练——判断双对称方阵

ello,点进来的小伙伴们,你们好呐!

系列专栏:【牛客刷题】

作者简介:一名双非本科的在读大三小白,我很平凡,学会努力!

给大家推荐一个超级好用的刷题平台——牛客网!

一、判断双对称方阵  

对于一个n阶方阵,请判断该方阵是否双对称,即既左右对称又上下对称。若是则输出“yes”,否则输出“no”。例如,样例中,以第2列为界则左右对称,以第2行为界则上下对称,因此输出“yes”。

输入格式:

首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组数据的第一行输入方阵的阶n(2≤n≤50),接下来输入n行,每行n个整数,表示方阵中的元素。

输出格式:

对于每组测试数据,若该方阵双对称,则输出“yes”,否则输出“no”。注意,引号不必输出。

输入样例:

   2

   3

   1 2 1

   3 5 3

   1 4 1

   3

   1 2 1

   3 5 3

   1 2 1

输出样例:

   no

   yes

解题思路:我们发现题目要求我们的矩阵必须是上下对称 并且 左右也对称 ,那么我们可以想到二维数组遍历的方法,分别比较首行 末行 首列 末列,然后通过循环比较第二行和n-2行 ,第二列和 m-2列,依次类推,设立两个flag 最后通过flag的数值来判断输出yes还是no。

   #include<stdio.h>

   int main() {

       int a[100][100],i,j,k,m,n;

       scanf("%d",&m);

       for(i=0; i<m; i++) {

           scanf("%d",&n);

           for(j=0; j<n; j++)

               for(k=0; k<n; k++)

                   scanf("%d",&a[j][k]);

       int flag=0;

       int flag2=0;

           for(j=0; j<n/2; j++) {

               for(k=0; k<n; k++)

                   if(a[j][k]!=a[n-1-j][k]) {

                       flag=1;

                       break;

                   }

               if(flag==1) {

   

                   break;

               }

           }

           for(j=0; j<n; j++)

               {

               for(k=0; k<n/2; k++)

                   if(a[j][k]!=a[j][n-1-k]) {

                       flag2=1;

                       break;

                   }

           if(flag2==1){

              break;  

           }

       }

           if(flag!=1  &&  flag2!=1){

                printf("yes\n");

           }

           else{

               printf("no\n");

           }

           flag=0;

           flag2=0;

           }

       return 0;

   }

相关文章
|
7月前
|
存储 算法 数据挖掘
力扣18题 四数之和:从基础到精通,一篇文章带你突破算法难关
力扣18题 四数之和:从基础到精通,一篇文章带你突破算法难关
|
存储 C++ 容器
五道超经典题目,带你手撕链表题(多种方法实现)下
五道超经典题目,带你手撕链表题(多种方法实现)
70 1
|
8月前
|
人工智能 算法 索引
六六力扣刷题贪心算法之K次取反后最大化的数组和
六六力扣刷题贪心算法之K次取反后最大化的数组和
55 0
|
算法
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
53 0
|
算法
代码随想录算法训练营第三十一天 | LeetCode 455. 分发饼干、376. 摆动序列、53. 最大子数组和
代码随想录算法训练营第三十一天 | LeetCode 455. 分发饼干、376. 摆动序列、53. 最大子数组和
76 0
|
Python
牛客刷题之数学基础-约数
牛客刷题之数学基础-约数
63 0
代码随想录算法训练营第七天| 454.四数相加II 383. 赎金信15. 三数之和18. 四数之和
代码随想录算法训练营第七天| 454.四数相加II 383. 赎金信15. 三数之和18. 四数之和
五道超经典题目,带你手撕链表题(多种方法实现)上
五道超经典题目,带你手撕链表题(多种方法实现)
118 0
|
算法 JavaScript 前端开发
日拱算法:解两道“杨辉三角”题
什么是“杨辉三角”,想必大家并不陌生~~ 在「杨辉三角」中,每个数是它左上方和右上方的数的和。
|
存储 算法 vr&ar
【力扣·周赛】第 284 场周赛(C++ | 枚举 | 分类讨论 | 最短路 | 建反图)
【力扣·周赛】第 284 场周赛(C++ | 枚举 | 分类讨论 | 最短路 | 建反图)
141 0
【力扣·周赛】第 284 场周赛(C++ | 枚举 | 分类讨论 | 最短路 | 建反图)