有关带状矩阵的一问!

rena12 2003-03-10 04:55:30
带状矩阵(或称对角矩阵)用一维数组存储,应如何实现哩?help,please!能举例最好了,谢谢先~
...全文
158 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Knight94 2003-03-19
  • 打赏
  • 举报
回复
其实,类似于带状、三角、对称,这些都是有规律,而选择一维存储是为了节省空间;你所说的当b很大,如果还这样的做的话,不会起到节省空间的目的,况且这样存储,对一些矩阵运算如乘法、转置等等都很麻烦。这方面的知识,数据结构里面说得很清楚。
winco 2003-03-18
  • 打赏
  • 举报
回复
楼上说得对。
就根据你的矩阵形状,然后写一个class,存储数据,矩阵维数,带宽:)
Knight94 2003-03-18
  • 打赏
  • 举报
回复
Sorry,我没看清题,但你的说明有些问题,应该是“带状矩阵(或称对称矩阵)”,图形如下所示:
x x 0 0 0 0 0
x x x 0 0 0 0
0 x x x 0 0 0
0 0 x x x 0 0
0 0 0 x x x 0
0 0 0 0 x x x
0 0 0 0 0 x x

这样每一行的元素都是有规律的,稍微注意以下最后一行就行了
例如此图带宽b应该为1,而每行的元素为2b+1即为3
还有什么问题?
rena12 2003-03-18
  • 打赏
  • 举报
回复
老狼同志:我有想,设计上好象挺麻烦地。。
按道理来说,应是两头的行数据递增,从第一行起分别为b+1,b+2。。。n。中间行都是n,
等等。。。。
rena12 2003-03-18
  • 打赏
  • 举报
回复
Knight94() :谢谢你的回答!不过我想的是当b很大时,如下图的b=5了,那么2b+1岂不很
浪费了~~~,我所思考的就是这个,你在给我解释解释吧,谢谢~
x x x x x x 0
x x x x x x x
x x x x x x x
x x x x x x x
x x x x x x x
x x x x x x x
0 x x x x x x

rena12 2003-03-10
  • 打赏
  • 举报
回复
书上写的,除第一行和最后一行外,每行都按(2b+1)个非零元素计算(注:b为带宽)
这句话就是错地,我觉得。。。
rena12 2003-03-10
  • 打赏
  • 举报
回复
三角矩阵偶会呀~~~~,就是这个带状矩阵比较难搞定,书上应该写错了~~~~~,你给讲讲吧,西西
Knight94 2003-03-10
  • 打赏
  • 举报
回复
反之相同,你也可以查查《数据结构》
Knight94 2003-03-10
  • 打赏
  • 举报
回复
简单,例如存下三角矩阵:
a[n][n]与B[n*(n+1)/2]对应关系为:
if(i<=j)
a[i][j]=B[i*(i+1)/2+j];
else
a[i][j]=B[j*(j+1)/2+i];

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧