9
从Matrix Chain Multiplication页面在维基百科上,有这个片段的Java代码:这是多维数组内存空间的冗余分配吗?
public void matrixChainOrder(int[] p) {
int n = p.length - 1;
m = new int[n][n];
s = new int[n][n];
for (int i = 0; i < n; i++) {
m[i] = new int[n];
m[i][i] = 0;
s[i] = new int[n];
}
...
是不是m = new int[n][n];
两个其尺寸已经分配大小n
内存空间,因此这一步的循环m[i] = new int[n];
实际上是多余的,因为它所做的是重新分配第二个维度?
我已经从文章中删除了多余的代码。 – chrylis 2015-03-19 05:30:57
'm [i] [i] = 0'也没有什么意义,因为它只是对角线的零。 – CodesInChaos 2015-03-19 10:02:52
不,因为整个数组初始化为只包含零。 – Clashsoft 2017-07-19 16:42:55