c - 三角阵

标签 c arrays

我想在 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 )。

注意事项

以上是下三角方阵/数组。你可以为

  • 一个上三角方阵/数组
    • 只需交换ij
  • 矩形下三角或上三角矩阵/数组
    • 这有点棘手(需要分案推理),但同样可以实现将一维数组(实现)映射到概念二维数组( View )的思路

关于c - 三角阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17406593/

相关文章:

c - fgets 在输入之前读取上一行

javascript - 为什么 JavaScript 中只显示数组的最后一个元素而不是所有元素

java - 将自定义对象数组保存到文件并在java中再次读取?

c - 如何通过execl函数显示HOME值?

php - 如何在 C 中获取 PHP 标准函数?

c - 在 C 中处理具有长度的字符串

C 中包含 ljpeg 库时出现编译错误

php - 获取前一个数组键的值

javascript - 短路 Array.forEach 就像调用 break

php - 检查某物是否为数组