【发布时间】:2016-09-29 20:09:38
【问题描述】:
我在看这个算法,第二个:动态规划解决方案
http://www.geeksforgeeks.org/dynamic-programming-set-24-optimal-binary-search-tree/
它创建一个动态数组:int cost[n][n];
这是如何工作的?我可以在 GeeksForGeeks C++ 模拟器上运行代码,但在本地 Visual Studio 中我收到错误“表达式必须具有常量值”。
我在这里误解了什么? C++在编译之前不需要知道数组的大小吗?
【问题讨论】:
-
VLA 是非标准 c++,一些编译器(如 GCC)支持它们,但不应依赖它,因为它不是可移植代码。
-
源将其称为 C/C++ 实现,这已经让我怀疑任何代码的正确性。在 C99 中,标准 AFAIK 支持 VLA。
-
sizeof如何在这样的数组上工作? -
以这种方式声明时,编译器需要知道除最后一个维度之外的所有维度的大小。由于 n 在编译时是未知的,因此它不符合此条件。更好的解决方案可能是使用新的或向量。