首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在xy平面上动态建立矩阵

在xy平面上动态建立矩阵
EN

Stack Overflow用户
提问于 2014-01-12 11:53:40
回答 2查看 78关注 0票数 0

我必须按顺序读取一些数据(从一个文件),并将数据放入一个矩阵中。一开始我不知道矩阵的等级。例如,假设数据绘制在x,y平面上,年在Y轴上,增量在x轴上。首先,1990年的数据增加了3次。

代码语言:javascript
复制
year increment(1991) increment(1992) increment(1993)
1990  12            25        35

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

代码语言:javascript
复制
year increment(1990) increment(1991) increment(1992) increment(1993)
1989    23             33                    43          53
1990    0              12                    25          35

请注意,当新数据出现在y轴( 1990 ).As中的另一个增量年时,1990年不存在增量年,这必须用零填充或保持为空,但是

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

代码语言:javascript
复制
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轴中的位置!

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-12 12:00:48

您可以使用SortedList<int, SortedList<int, int>>将其构建为稀疏矩阵。

票数 1
EN

Stack Overflow用户

发布于 2014-01-12 12:21:38

我非常喜欢稀疏矩阵解决方案,但是您可以使用array的一个版本。动态数组是当数组太满时调整大小的数组。调整大小是很昂贵的,但是如果每次调整大小时将大小增加一个常数,那么调整大小的成本就会计算出来,如果最终大小有n个元素,那么总成本仍然是O(n)。

要使用动态数组,您可以为每一行创建两个动态数组,一个增长的年份比到目前为止看到的多年,另一个增长的年份比到目前为止看到的年数要小(按数组的年数递减)。

另一种方法是为矩阵创建一个存储区域,只使用中央部分,所以总是有空间向任何方向添加条目。然后,您必须检查,当您要在边缘上运行时,将这个存储的大小增加一个恒定的因子,这将导致总成本最多为O(n)。我怀疑会这样,但不变的因素可能不是很好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21074297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档