C语言编程左右对称,C语言经典算法 - 上三角、下三角、对称矩阵
搜索热词
下面是编程之家 jb51.cc 通过网络收集整理的代码片段。
编程之家小编现在分享给大家,也给大家做个参考。
说明
上三角矩阵是矩阵在对角线以下的元素均为0,即Aij = 0,i > j,例如:
1 2 3 4 5
0 6 7 8 9
0 0 10 11 12
0 0 0 13 14
0 0 0 0 15
下三角矩阵是矩阵在对角线以上的元素均为0,即Aij = 0,i < j,例如:
1 0 0 0 0
2 6 0 0 0
3 7 10 0 0
4 8 11 13 0
5 9 12 14 15
对称矩阵是矩阵元素对称于对角线,例如:
1 2 3 4 5
2 6 7 8 9
3 7 10 11 12
4 8 11 13 14
5 9 12 14 15
上三角或下三角矩阵也有大部份的元素不储存值(为0),我们可以将它们使用一维阵列来储存
以节省储存空间,而对称矩阵因为对称于对角线,所以可以视为上三角或下三角矩阵来储存。
解法
假设矩阵为nxn,为了计算方便,我们让阵列索引由1开始,上三角矩阵化为一维阵列,若以
列为主,其公式为:loc = n*(i-1) - i*(i-1)/2 + j
化为以行为主,其公式为:loc = j*(j-1)/2 + i
下三角矩阵化为一维阵列,若以列为主,其公式为:loc = i*(i-1)/2 + j
若以行为主,其公式为:loc = n*(j-1) - j*(j-1)/2 + i
公式的导证其实是由等差级数公式得到,您可以自行绘图并看看就可以导证出来,对于C/C++
或Java等索引由0开始的语言来说,只要将i与j各加1,求得loc之后减1即可套用以上的公式。
#include
#include
#define N 5
int main(void)
{
int arr1[N][N] = {
{1,2,3,4,5},{0,6,7,8,9},10,11,12},13,14},15}};
int arr2[N*(1+N)/2] = {0};
int i,j,loc = 0;
printf("原二维资料:\n");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
printf("%4d",arr1[i][j]);
}
printf("\n");
}
printf("\n以列为主:");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
if (arr1[i][j] != 0)
arr2[loc++] = arr1[i][j];
}
}
for (i = 0; i < N *(1+N) / 2; i++)
printf("%d ",arr2[i]);
printf("\n输入索引(i,j):");
scanf("%d,%d",&i,&j);
loc = N * i - i *(i + 1) / 2+j;
printf("(%d,%d) = %d",i,arr2[loc]);
printf("\n");
return 0;
}
以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
C语言编程左右对称,C语言经典算法 - 上三角、下三角、对称矩阵相关推荐
- c语言中求匀加速直线速度,速求C语言编程题 c语言编程速度求
导航:网站首页 > 速求C语言编程题 c语言编程速度求 速求C语言编程题 c语言编程速度求 相关问题: 匿名网友: #include //计算行元素和 void CountRow(int a[] ...
- c语言编程心得,C语言编程心得
记录这些是为了日后自己想查阅以前经验的方便,同时若能给其他网友带来一些帮助,就更好了~ C语言,自己经常遇到的问题: 1.段错误 段错误一般是由于访问了不存在的地址造成的,具体的原因有文件路径不存在, ...
- 猴子偷桃c语言编程软件,c语言经典算法——猴子偷桃问题
题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿 ...
- C语言编程实现冰雹猜想的算法,并测算各个自然数到达4-2-1谷底(即N等于4,2,1结束后)所经过的变换次数。
更多资料请点击:我的目录 1976年的一天,<华盛顿邮报>于头版头条刊登了一条数学新闻,文中叙述了这样一则故事:70年代中期,美国个所名牌大学校园内,人们都像发疯一般,日以继夜废寝忘食地玩 ...
- c语言作业冰雹猜想,C语言编程实现冰雹猜想的算法,并测算各个自然数到达4-2-1谷底(即N等于4,2,1结束后)所经过的变换次数。...
更多资料请点击:我的目录 1976年的一天,<华盛顿邮报>于头版头条刊登了一条数学新闻,文中叙述了这样一则故事:70年代中期,美国个所名牌大学校园内,人们都像发疯一般,日以继夜废寝忘食地玩 ...
- c语言 兔子数列螺线图,经典算法大全51例——2.斐波那契数列(兔子数列)
经典算法大全51例--2.斐波那契数列 算法目录合集 地址 说明 题目 原理分析 代码实现--Java 相关题目其他变形: 1.爬楼梯(来源:力扣LeetCode) 2.兔子成熟期拉长 官方题解 分析 ...
- 决策树C4.5算法 c语言实现,数据挖掘十大经典算法(1) C4.5_决策树算法
数据挖掘十大经典算法(1) C4.5_决策树算法 机器学习中,决策树是一个预测模型:他代表的是对象属性与对象值之间的一种映射关系.树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每 ...
- 掌握了c语言就能够编程,C语言编程学习-C语言编程学习app-最火手机站
C语言编程学习是一款优质的学习软件,能够帮助用户更好的学习C语言,让用户在线就能够获得更多的帮助,快速的解决你的学习需求,增加你的使用体验,进入平台就能够获得优质的学习服务,更好的解决用户的学习问题; ...
- java语言编程基础_java语言编程基础
java语言基本要素 高级语言如c++.c#.java等都有一些共同性的东西:关键字.标识符. 运算符.注释.数据类型.常量和变量.语句.函数.数组.高级语言在这些要素上大同小异. Java关键字:一 ...
最新文章
- 有声专栏-宏基因组专业词汇讲解
- 十、oracle 常用函数
- 一个供应商只允许一个报价单
- tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数
- 【学习Python】的网站
- OpenCASCADE:绘制测试线束之命令语言
- leetcode 36. Valid Sudoku | 37. Sudoku Solver(数独)
- 利用JS实现点击上一周或下一周却换
- linux加密框架 crypto 算法管理 - 算法查找接口 crypto_alg_lookup函数
- 【工具】sysbench 0.5 简介
- futureTask的超时原理解析
- Qt5开发及实例学习之监听目录
- iOS中的谓词(NSPredicate)使用
- CSS——简写属性(在padding和margin这样的简写属性中,值赋值的顺序是top、right、bottom、left)...
- 数据结构:图结构的实现
- 茶叶文化网站设计与实现 HTML+CSS学生网页设计作业源码
- 51GIF GIF动图中文搜索平台,表情包发源地,GIF动图素材库
- Google学术搜索镜像网站搜集
- vue实现页面全屏和退出全屏
- css表格文字不换行怎么设置?