【问题标题】:Initializing a 2d dynamic array with all entries 0初始化所有条目为 0 的二维动态数组
【发布时间】:2013-12-29 17:15:51
【问题描述】:

是否可以创建一个所有条目都等于0的动态数组?

 int** adjMatrix;
 adjMatrix= new int*[numOfVertices];
for(int i=0; i<numOfVertices; i++){
    adjMatrix[i]=new int[numOfVertices];
}

另外, 我被要求在图中找到最长的路径。在将所有权重乘以 -1 并以正常方式运行程序后,我正在考虑使用 Dijsktra 算法。然后我将再次乘以 -1 并获得最长的路径。我认为这应该给我最长的路径,你认为它会工作吗?而且,我正在处理相当大的数据,例如 1.000.000 个节点等,我有 2 秒的时间限制和 128mb 的内存限制。你能推荐任何其他数据结构来代替邻接矩阵吗?因为我很确定它会超过限制。任何帮助将不胜感激。

【问题讨论】:

标签: c++ arrays dynamic graph dijkstra


【解决方案1】:

是否可以创建一个所有条目都等于0的动态数组?

使用值初始化

for(int i=0; i<numOfVertices; i++){
    adjMatrix[i]=new int[numOfVertices]();
    //                                 ^^
}

【讨论】:

    【解决方案2】:

    最快的方法是使用memset仅当数组在内存中是连续的。因此,要使其正常工作,您首先应该分配一个一维数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      相关资源
      最近更新 更多