c++ - 表示下/上三角矩阵的有效方法

标签 c++ c algorithm data-structures multidimensional-array

我正在使用二维的 C/C++ 程序处理我的数据。这里我的值是成对计算的,这里 foo[i][j]foo[j][i] 的值相同。

因此,如果我使用简单的二维数组来实现它,我的一半空间将被浪费。那么什么是表示这个下/上三角矩阵的最佳数据结构。

问候,

最佳答案

如果您有 N 个项目,则没有主对角线的下三角阵列将有 (N - 1) * N/2 个元素,或 (N + 1) * N/2 个元素和主对角线。没有主对角线,(I, J) (I,J ∈ 0..N-1, I > J) ⇒ (I * (I - 1)/2 + J)。对于主对角线,(I,J ∈ 0..N-1, I ≥ J) ⇒ ((I + 1) * I/2 + J)。

(是的,当您在 2.5 GB 的机器上分配 4 GB 时,将其减少一半确实会产生巨大的影响。)

关于c++ - 表示下/上三角矩阵的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7945722/

相关文章:

c - 具有链接方法程序的哈希表未按预期工作

algorithm - 跟随领导者的昆虫 - 我可以为此实现 Boids 算法吗?

algorithm - 给定点的坐标,找到彼此之间存在一定距离的所有点对?

c++ - 在 Eclipse 环境中使用共享库 (SDSoC)

c++ - 无法在 Eclipse 中创建 C++ 项目

c - 在 C 中的循环中生成一个随机整数数组

c - 时间值为零的 nanosleep 有什么作用?

c++ - 将文本文件存储到类中

c++ - 是否有任何适用于延迟着色的独立于顺序的透明技术?

c++ - 检查字符是否在字符串中至少出现 N 次。算法中的任何解决方案?