news 2026/4/30 7:47:08

c语言的练习—二维数组的练习(对称矩阵的判定)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
c语言的练习—二维数组的练习(对称矩阵的判定)

对于此道题,所谓对称矩阵,意思就是关于左对角线对称的数字对应相等。

那么我们不妨使用我上一次发表的文章的方法来进行规律的寻找。

我们不妨使用题目中的第一个例子来举例

接下来我以图片的方式呈现出来

显然的,我们能够发现这两个三的位置和两个十二的位置,是不是恰巧 i 与 j 的数字交换位置了。

那么聪明的你是不是觉得找到真正的规律了。认为只需要 判断 sz[i][j]==sz[j][i]就可以了,这个先留在这里作为一个疑惑。

我们不妨验证一下。(我改变了一下我的代码以完成这步的探究)、

这里给出错误的代码图片

(后面我讲解正确算法时,我再逐步分解编写代码的过程)

这里是其输出,确实的,这个矩阵很明显是一个对称矩阵,但是我们不需要如此之多的yes,我们只需要一个yes,就可以了。但是如何解决这个问题呢,其实是非常简单的,在学习c语言的时候,我们曾经学过如何判断一个数是素数,这个的做法与其很相似,我们当时定义了一个变量,这里不妨设为a,给a赋值为1。a=1,如果这个数n与2到n-1的数取余不等于零我们说这个a=1,否则a=0,注意在这里设置a为全局变量,否则我们后续将无法使用这个a。于是我们使用这个a来做判断,如果a=1,那么这个数是素数,如果a=0,那么就不是,这样就解决了多个yes的问题了。

注意 判断时, if(a==1),里面是两个等于号才代表判断,否则代表赋值。

那么这道题,我们使用同样的思想,这里我不妨给出完整的代码。

#include<stdio.h>
int main(){
int n;
int sz[25][25];//在定义数组时,多定义几个位置,为了防止数组越界,并且有助于算法的实现。
int statistic=0; //统计数字,我用的变量就是这个英文单词的意思,是不是很明确呢。
while(scanf("%d",&n)!=EOF){//这里实现多组输入
if(n==0) break;//满足题目要求
else {
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
scanf("%d",&sz[i][j]);
}
}
statistic=0;//在多组输入的过程中,要更新这个数字的值,否则会产生错误。
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(sz[i][j]==sz[j][i]){
statistic++;
}
}
}
if(statistic==n*n){
printf("yes\n");
} else{
printf("no\n");
}
}
}
return 0;
}

接下来是核心代码的解读

if(statistic==n*n){
printf("yes\n");
} else{
printf("no\n");
}

我这里为什么要判断是n*n,其实就是n平方的意思,我们想如果这个矩阵是一个对称矩阵,那么对称位置上的数字都是相等的。除去这些对称位置上的数字,就剩下了,正对角线的数字,这些数字的 i , j 都是相同的,也就是判断它们是不是等于它们本身,显然是的。

所以也就是 statistic这个变量等于这个矩阵中一共有多少个数字,那么这个矩阵就一定是一个对称矩阵,否则就不是一个对称矩阵。

对于我的算法而言,我作为一个初学者,目前只能够做到O(n*n) ,我相信一定会有更优质的算法,能够降低时间复杂度。

但是我尚未学习。仅能够做到现在的程度。我想当我学到的时候,我可能会联想到这一题吧,到时候再给出更优解。

说到这里,这道题的讲解就结束了,感谢您的阅读!

如果您觉得小白作者的思路还可以的话,不妨给我留下一个免费的点赞,支持一下萌新作者我吧。

谢谢啦

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 7:45:43

基于Redis Zset 实现延迟队列原理和优缺点总结

基于 Redis Zset 实现延迟队列:原理与优缺点总结 一、核心原理 基于 Redis 有序集合(Zset)实现延迟队列的本质是:利用 Zset 的 score 字段存储消息的“执行时间戳”,消费者通过轮询获取 score ≤ 当前时间的消息进行处理。 1.1 数据结构设计 元素 说明 key 延迟队列名称…

作者头像 李华
网站建设 2026/4/30 7:42:38

检测设备为手机或电脑来跳转不同网页

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示一、详细介绍 开箱即用&#xff0c;不过需要自己修改一下跳转链接 其实就是一个跳转文件&#xff0c;不过加了一个检测。 二、效果展示 1.部分代码 代码如下&#xff08;示例&#xff09;&#xff1a; function st…

作者头像 李华
网站建设 2026/4/30 7:27:23

移动端AR-VR开发初探

移动端AR/VR开发初探&#xff1a;开启虚实交融的新世界 在智能手机性能飞速提升的今天&#xff0c;移动端AR&#xff08;增强现实&#xff09;和VR&#xff08;虚拟现实&#xff09;技术正逐渐从概念走向普及。无论是购物时“试穿”虚拟服装&#xff0c;还是通过手机探索历史场…

作者头像 李华
网站建设 2026/4/30 7:26:23

结构拓扑优化与OAT框架:深度学习驱动的工程设计革命

1. 结构拓扑优化与OAT框架概述结构拓扑优化&#xff08;Topology Optimization, TO&#xff09;是工程设计领域的核心技术&#xff0c;其目标是在给定设计空间内寻找最优的材料分布方案&#xff0c;以满足特定的物理性能指标&#xff08;如刚度最大化或强度最大化&#xff09;。…

作者头像 李华