【发布时间】:2012-10-31 14:30:08
【问题描述】:
我目前正在为一项涉及城市和桥梁的任务编写代码。我必须在他们受人尊敬的地区打印城市和桥梁,例如:
//unorganized inputs from user given the # of "paths" we need
4 // the # of paths
1 2 5 // 1 = city , 2 = city, 5 = bridge length
6 7 5 // 6 = city , 7 = city, 5 = bridge length
2 3 7 // 2 = city , 3 = city, 7 = bridge length
6 9 7 // 6 = city , 9 = city, 7 = bridge length
程序运行后,排序为:
first district
1 2 5
2 3 7
2nd district
6 7 5
6 9 7
现在,我将通过 cin 读取这些输入。我想将所有可能的路径(例如 1 2 5)存储到一个数组中,然后通过程序对其进行排序和组织。问题是我可能有超过 500,000 条来自用户的路径。我想创建 500k 动态数组。这会导致内存方面的严重问题吗?
我已经研究过其他可能的解决方法,例如 kruskal 算法和不相交集(我认为是最有用的)。我很难理解不相交集的编码,我想我尝试一种我更熟悉的方式。
任何关于在哪里存储值以及比较和组织它们的帮助都会很棒。链接到我阅读这方面信息的地方会有所帮助。在过去的几天里,我读了很多书。没有太大帮助。
总结一下,我的问题是:
- 500k 动态数组会在内存方面造成严重问题吗?
- 在哪里存储值并根据路径比较和组织它们?
【问题讨论】:
-
“问题是我可能有超过 500,000 条来自用户的路径。”,您是否暗示您希望用户通过控制台输入 500,000 条路径?
-
这可能是通过一个文件。
-
@SingerOfTheFall:导师很可能会使用
cat problem_instance1 | user_written_program之类的东西。 -
@Zeta,我希望它,但我想我最好问一下;)
-
既然有
std::vector,为什么还要使用动态数组?
标签: c++ arrays dynamic disjoint-sets