数组存储位置

来源:2-5 包含,搜索和删除

Heartlaughter

2020-04-29

波波老师好,我发现我对数组存储位置的一些公式的来源不知道怎么推导,我不知道问题的根本原因,所以想请教您指出不懂这类问题的根本原因。
比如3对角阵映射到一维向量中存储的映射关系、上(下)三角阵转换成一维向量或者一维向量转成上三角或下三角、一维矩阵按行存储按列存储这种一类关于二维索引和一维索引相互转换的题目都感觉不太会,题目的答案都只给出一个硬生生的公式,但是我不知道如何去推导出来各种索引的转换。
所以想请您指点一下迷津,这类问题的不会,究竟是什么原因造成的,应该多做哪方面的练习?还有就是我总是对索引处是否要+1 , -1 ,或者不加不减这种问题感到纠结。希望您百忙之中能抽空回复一下学生,谢谢您!

写回答

2回答

liuyubobobo

2020-04-30

其实我没有特别明确你说的问题,但整体,你说的并非是一类问题,还是需要具体问题具体分析。


你可以具体举一个例子,我们具体问题具体分析。我相信理解了一两个你说的“硬生生的公式”到底是怎么推导的以后,就没那么大的问题了。


索引是否要 +!,-1,不是规则,而是根据你写的逻辑定的。关键还是你的逻辑是怎样的,代码是逻辑的实现工具而已。所以还是要具体问题具体分析。


继续加油!:)




0
0

Heartlaughter

提问者

2020-04-30


//img.mukewang.com/szimg/5eaa25c608ebd3c101661076.jpg
比如说这种题目。虽然说我自己分析的话,我可能会用拆分法。
对于aij
步骤一:先把它[1,j-1]列所包含的元素算出来。
步骤二:然后再把自己所处列的前面的元素再加起来。
这是一种思路,虽然我能做出答案来,但是我觉得我如果再做这种题还是需要打比较多的草稿才能才能推出来。比如说对于这个题的步骤一,我无法脑补出具体n与j的关系,只能通过数学归纳法做(我一直都是这样做,但是对数归法做这种题目觉得总是没有接触到逻辑本质)
如图
//img.mukewang.com/szimg/5eaa274108c91d7003171216.jpg
我的疑问就是,波波老师在做这种需要探究行、列、阶之间的关系时,应该如何去找关系?

然后就是步骤2,要不是是答案给了i-j这种式子,如果是填空题,我觉得我也想不到拿i-j。就感觉这些式子虽然是相当正确,但是它逻辑的起源我总是想不明白,对于步骤2的这个式子,可能我“意外的”拿i-j一减,然后随便带一个i和j,比如a21,发现刚才随便猜的式子『i-j』刚好求的是a21在第一列前面的元素个数,然后再带另一个aij,去验证。再由目前看到的规律“猜出”通式。但是这种方式还是没有接触到逻辑的底层。而且有时候可能说你猜错了!
我对问题拆分到这里就不知道怎么拆了,还希望波波老师能分享一下您思考这类问题,探究行、列、阶之间关系的经验!学生在此谢过!!!

0
2
Heartlaughter
回复
liuyubobobo
感谢波波老师解答!希望波波老师生活愉快!
2020-04-30
共2条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程