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

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

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;

   }

相关文章
|
4月前
|
测试技术
【一刷《剑指Offer》】面试题 9:斐波那契数列(扩展:青蛙跳台阶、矩阵覆盖)
【一刷《剑指Offer》】面试题 9:斐波那契数列(扩展:青蛙跳台阶、矩阵覆盖)
|
4月前
【一刷《剑指Offer》】面试题 20:顺时针打印矩阵
【一刷《剑指Offer》】面试题 20:顺时针打印矩阵
[算法刷题题解笔记] 洛谷 P1011 [NOIP1998 提高组] 车站 [数学|斐波那契|推导]
[算法刷题题解笔记] 洛谷 P1011 [NOIP1998 提高组] 车站 [数学|斐波那契|推导]
|
10月前
|
算法
代码随想录算法训练营第五十三天 | LeetCode 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和
代码随想录算法训练营第五十三天 | LeetCode 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和
51 1
|
4月前
|
机器学习/深度学习
蓝桥杯-2/14天-完全平方数【另类思路】
蓝桥杯-2/14天-完全平方数【另类思路】
|
10月前
|
算法
代码随想录算法训练营第三十一天 | LeetCode 455. 分发饼干、376. 摆动序列、53. 最大子数组和
代码随想录算法训练营第三十一天 | LeetCode 455. 分发饼干、376. 摆动序列、53. 最大子数组和
51 0
|
10月前
|
算法
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
39 0
|
算法 Java 测试技术
LeetCode 周赛上分之旅 #46 经典二分答案与质因数分解
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
57 0
LeetCode 周赛上分之旅 #46 经典二分答案与质因数分解
代码随想录算法训练营第七天| 454.四数相加II 383. 赎金信15. 三数之和18. 四数之和
代码随想录算法训练营第七天| 454.四数相加II 383. 赎金信15. 三数之和18. 四数之和
|
机器学习/深度学习 算法 JavaScript
代码随想录训练营day31| 455.分发饼干 376. 摆动序列 53. 最大子序和
代码随想录训练营day31| 455.分发饼干 376. 摆动序列 53. 最大子序和