写下来的原因,是觉得这个对我来说有纪念意义(大佬勿喷,虽然没有大佬会看......).第一次主动写总结,真的是好激动呢.
先做了这一题,然后在下一题里面给了自己点启发.
题目是这样子的:
ps:这题我也不知道标准答案,自己的拙劣方法,感觉还有有更好的更简便的方法.
用到的数学知识:
容易发现:主对角线上有n个元素,相邻的每隔一条会减少一个元素.
用上面的 式子就可不用一 一列出尾项,公差为-1,首项为n - 1 ,项数为a - 1条, 带入可直接得到这部分个数和.
(b) 这题靠感觉吧,观察矩阵的下标,再尝试性将a赋予不同的值观察.
以前听课,老师讲过行序列序,没讲过按对角线序存储.
这题本质就是找到aij 这个元素在一维矩阵中是第几个元素.
根据(b)题的启发,我们可以发现,根据i - j 的值可以轻松的发现aij 这个元素在第几条对角线上.
发现了在第几条对角线,之后看到两侧的第一条对角线和倒数第一条对角线元素个数为n - (a - 1)个(可以根据文中 ##1 标记处发现)就又是等差数列的问题.
这里还需要分类讨论,因为在二维数组中主对角线两侧的元素位置对称的情况下,在一维数组中位置并不对称.
又发现,在i >= j条件下aij,的 j值 就表示其在那条对角线上,元素位置为 第 j + 1 个.
也就是说,aij 是前面所有对角线元素个数和,加上j+1,在对应一维数组中的寻址位置也就是再减一.
在下面a-1条及主对角线的基础上,在上半区域里面,即上面的a-1条对角线里面再开始大体相同的计算.
再加上前面的a条对角线一共的总数目,得到这个是第几个位置的元素,再减一,即为对应一维数组中的寻址地址.
答案(经过验算的..)为:
ps:本想将第二个式子拆开找与i >= j情况下式子的微妙关系,尝试合并,结果是徒劳,然后还是觉得原来不拆开的式子好看.