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

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) ,我相信一定会有更优质的算法,能够降低时间复杂度。

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

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

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

谢谢啦

http://www.jsqmd.com/news/723928/

相关文章:

  • 如何快速获取百度网盘提取码:baidupankey终极使用指南
  • React SSR 性能优化与缓存设计
  • 《跳出西方 AI 范式:以天人同胎十六字道学,重构下一代可信 AI 全生命周期底层体系
  • BetterJoy终极指南:5分钟让Switch手柄变身PC游戏利器
  • GRM奖励模型:机器人强化学习的视觉评估与优化
  • 科技中介机构如何快速搭建专业的数智化服务系统?
  • 如何永久备份微信聊天记录?WeChatMsg让你的珍贵对话永不丢失
  • 远程容器开发成本飙升?3个被90%团队忽略的CPU/内存泄漏点,今天必须修复!
  • 5个简单步骤:用downkyi免费批量下载B站视频的完整教程
  • 为什么你的AI Sandbox永远“半隔离”?——深度拆解Linux命名空间缺陷、GPU共享陷阱与3种绕过检测的隐蔽行为
  • 2026 数字孪生空间智能服务商 TOP10 综合实力榜单
  • 商品结构需要重排跨境卖家如何选择先优化哪一类
  • 终极碧蓝航线自动化脚本:Alas如何24小时解放你的双手 [特殊字符]
  • VBA-JSON 指南:在Office中轻松处理JSON数据
  • C# 13模式匹配到底强在哪?对比C# 12的12处关键突破,含IL反编译数据+基准测试报告(附GitHub可运行Demo)
  • 终极B站视频下载指南:DownKyi免费工具的完整使用教程
  • 如何高效捕获网页媒体资源?3步掌握猫抓浏览器扩展实用技巧
  • ES|QL METRICS_INFO 和 TS_INFO:为你的时间序列数据建立目录
  • 2026年3月服务好的泄爆板企业推荐,泄爆墙/抗爆板/泄爆板/纤维水泥复合钢板/防爆板/防爆墙,泄爆板工程口碑推荐 - 品牌推荐师
  • Rust架构深度解析:Universal Android Debloater的系统级应用管理实现原理
  • 照片去背景的方法有哪些?2026年免费照片去背景工具推荐,这9款实测后我只留了小程序
  • ERC PATHCHK案例分享
  • 8.8k星星!开源的211个专家级Agent,一键接入,一个人就是一个团队
  • 3分钟掌握终极免费浏览器Markdown阅读器:让你的文档瞬间变美观
  • 从图像分割到世界模拟:3D环境构建技术演进
  • AzurLaneAutoScript:解放双手的碧蓝航线智能管家
  • 颠覆你的编曲认知!Ample Guitar v4 世代全家桶深度评测与解析
  • 微信聊天记录删除了怎么恢复?找回先分清情况,再选择方法
  • 2026国内诚信的商标律所推荐及选择参考 - 品牌排行榜
  • 手机拍照对焦快准狠的秘密:一文看懂PDAF、Dual Pixel和Super PD的区别