搜索热词

下面是编程之家 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语言经典算法 - 上三角、下三角、对称矩阵相关推荐

  1. c语言中求匀加速直线速度,速求C语言编程题 c语言编程速度求

    导航:网站首页 > 速求C语言编程题 c语言编程速度求 速求C语言编程题 c语言编程速度求 相关问题: 匿名网友: #include //计算行元素和 void CountRow(int a[] ...

  2. c语言编程心得,C语言编程心得

    记录这些是为了日后自己想查阅以前经验的方便,同时若能给其他网友带来一些帮助,就更好了~ C语言,自己经常遇到的问题: 1.段错误 段错误一般是由于访问了不存在的地址造成的,具体的原因有文件路径不存在, ...

  3. 猴子偷桃c语言编程软件,c语言经典算法——猴子偷桃问题

    题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿 ...

  4. C语言编程实现冰雹猜想的算法,并测算各个自然数到达4-2-1谷底(即N等于4,2,1结束后)所经过的变换次数。

    更多资料请点击:我的目录 1976年的一天,<华盛顿邮报>于头版头条刊登了一条数学新闻,文中叙述了这样一则故事:70年代中期,美国个所名牌大学校园内,人们都像发疯一般,日以继夜废寝忘食地玩 ...

  5. c语言作业冰雹猜想,C语言编程实现冰雹猜想的算法,并测算各个自然数到达4-2-1谷底(即N等于4,2,1结束后)所经过的变换次数。...

    更多资料请点击:我的目录 1976年的一天,<华盛顿邮报>于头版头条刊登了一条数学新闻,文中叙述了这样一则故事:70年代中期,美国个所名牌大学校园内,人们都像发疯一般,日以继夜废寝忘食地玩 ...

  6. c语言 兔子数列螺线图,经典算法大全51例——2.斐波那契数列(兔子数列)

    经典算法大全51例--2.斐波那契数列 算法目录合集 地址 说明 题目 原理分析 代码实现--Java 相关题目其他变形: 1.爬楼梯(来源:力扣LeetCode) 2.兔子成熟期拉长 官方题解 分析 ...

  7. 决策树C4.5算法 c语言实现,数据挖掘十大经典算法(1) C4.5_决策树算法

    数据挖掘十大经典算法(1) C4.5_决策树算法 机器学习中,决策树是一个预测模型:他代表的是对象属性与对象值之间的一种映射关系.树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每 ...

  8. 掌握了c语言就能够编程,C语言编程学习-C语言编程学习app-最火手机站

    C语言编程学习是一款优质的学习软件,能够帮助用户更好的学习C语言,让用户在线就能够获得更多的帮助,快速的解决你的学习需求,增加你的使用体验,进入平台就能够获得优质的学习服务,更好的解决用户的学习问题; ...

  9. java语言编程基础_java语言编程基础

    java语言基本要素 高级语言如c++.c#.java等都有一些共同性的东西:关键字.标识符. 运算符.注释.数据类型.常量和变量.语句.函数.数组.高级语言在这些要素上大同小异. Java关键字:一 ...

最新文章

  1. 有声专栏-宏基因组专业词汇讲解
  2. 十、oracle 常用函数
  3. 一个供应商只允许一个报价单
  4. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数
  5. 【学习Python】的网站
  6. OpenCASCADE:绘制测试线束之命令语言
  7. leetcode 36. Valid Sudoku | 37. Sudoku Solver(数独)
  8. 利用JS实现点击上一周或下一周却换
  9. linux加密框架 crypto 算法管理 - 算法查找接口 crypto_alg_lookup函数
  10. 【工具】sysbench 0.5 简介
  11. futureTask的超时原理解析
  12. Qt5开发及实例学习之监听目录
  13. iOS中的谓词(NSPredicate)使用
  14. CSS——简写属性(在padding和margin这样的简写属性中,值赋值的顺序是top、right、bottom、left)...
  15. 数据结构:图结构的实现
  16. 茶叶文化网站设计与实现 HTML+CSS学生网页设计作业源码
  17. 51GIF GIF动图中文搜索平台,表情包发源地,GIF动图素材库
  18. Google学术搜索镜像网站搜集
  19. vue实现页面全屏和退出全屏
  20. css表格文字不换行怎么设置?

热门文章

  1. UMLChina上海公开课听课体会
  2. VC10中的C++0x特性 Part 2 :右值引用
  3. 关于城管委的回应书写
  4. 自媒体账号被扣分限流了怎么办?继续更新还是注销?3招教你解决
  5. “微信跳一跳”辅助脚本的一种简单实现
  6. 2021年,开发者的落日
  7. python打地鼠包老师_“打地鼠式”抽背?小学老师自创新式背诵法,让孩子自愿背书...
  8. 合作,向强者学习,成长
  9. 王者荣耀为什么不使用微服务架构?
  10. 用C++做一个猜数字游戏