我目前正在为处理城市和桥梁的任务编写代码。我必须在他们受人尊敬的地区打印城市和桥梁,例如:
//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 的动态数组会不会在内存方面造成严重的问题?
- 在给定路径的情况下,在哪里存储值并比较和组织它们?