gpt4 book ai didi

c# - 在xy平面动态建立矩阵

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:46:25 25 4
gpt4 key购买 nike

我必须按顺序(从文件中)读取一些数据并将数据放入矩阵中。我最初不知道矩阵的等级。例如,假设数据绘制在 x、y 平面上,Y 轴为年份,x 轴为增量。起初,1990 年的数据以 3 个增量出现

year increment(1991) increment(1992) increment(1993)
1990 12 25 35

请注意,我只会在读取数据行后才知道增量。所以接下来是 1989 年,有 4 个增量。所以应该是

year increment(1990) increment(1991) increment(1992) increment(1993)
1989 23 33 43 53
1990 0 12 25 35

请注意,当新数据以另一个增量年份出现在 y 轴(1990)中时。由于 1990 年没有增量年份 1990,因此必须用零填充或将其留空,但是

最后我必须创建一个矩阵。例如

year increment(1990) increment(1991) increment(1992) increment(1993) 
1989 23 33 43 53
1990 0 12 25 35
1991 0 0 23 33

要建立矩阵,困难的部分是我最初不知道年份/增量,只有阅读整个数据后才能知道。我想在读取数据时绘制矩阵,这样我就可以避免多次通过数据。

矩阵在xy轴的位置只有在处理完整个数据后才能知道!

有什么建议吗?

最佳答案

我非常喜欢稀疏矩阵解决方案,但您可以使用 http://en.wikipedia.org/wiki/Dynamic_array 的一个版本.动态数组是当它们变得太满时可以调整大小的数组。调整大小是昂贵的,但是如果每次调整大小时都将大小增加一个常数因子,那么调整大小的成本就会计算出来,因此如果最终大小有 n 个元素,总成本仍然是 O(n)。

要为此使用动态数组,您可以为每一行创建两个动态数组,一个增长的年份比目前看到的大,另一个增长的年份比目前看到的小(所以年份按降序排列数组)。

另一种方法是为矩阵创建一个单独的存储区域,只使用中央部分,因此始终有空间可以在任何方向添加条目。然后,您必须检查当您即将越过边缘时,将此存储的大小增加一个常数因子会导致总成本至多为 O(n)。我怀疑它会,但常数因子可能不是很好。

关于c# - 在xy平面动态建立矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21074297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com