我想在 C 中构造一个二维数组,其中每一行都有不同数量的元素。具体来说,我想构建一个三角形的 7x6 数组。为了节省内存,我想避免存储零,如下例所示。
1 0 0 0 0 0 0
1 1 0 0 0 0 0
...
1 1 1 1 1 1 1
我该怎么做?
最佳答案
配方
这个索引系统行不通吗?
0
1 2
3 4 5
6 7 8 9
...
只需将您的数据存储在一维数组中,使用此映射到三角矩阵/数组。
双射
一维零基索引k
和二维零基行i
和列 j
k = i(i+1)/2 + j
时相同(其中 j <= i
)。
注意事项
以上是下三角方阵/数组。你可以为
- 一个上三角方阵/数组
- 只需交换
i
和j
- 只需交换
- 矩形下三角或上三角矩阵/数组
- 这有点棘手(需要分案推理),但同样可以实现将一维数组(实现)映射到概念二维数组( View )的思路
关于c - 三角阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17406593/