首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从二维数组创建距离矩阵

从二维数组创建距离矩阵
EN

Stack Overflow用户
提问于 2014-07-28 12:10:32
回答 2查看 1.2K关注 0票数 0

我有一个2D数组(包含x行和y列的inputMatrix),并且需要相互减除所有向量(行)。

代码语言:javascript
复制
Here's the input:

1,5
3,7
2,3
6,5
4,7

输出(一个距离矩阵)应该如下所示:

代码语言:javascript
复制
subtraction[0][0] = {0,0} // first row - first row
subtraction[0][1] = {-2,-2} // first row - 2nd row -> {1,5}-{3,7}=-2,2
subtraction[0][2] = {-1,2} // first row - 3rd row 
...
subtraction[4][2] = {2,4}
subtraction[4][3] = {-2,2}
subtraction[4][4] = {0,0}

但是,我在存储值方面遇到了问题,因为subtractionrow值正在被覆盖在“colfor循环”上。同样需要注意的是,每个减法索引都是输出另一个数组时得到的。

代码语言:javascript
复制
for(int row = 0; row < inputMatrix.length; row++){
            for(int col = 0; col < inputMatrix[0].length; col++){
                subtraction[row][col] = inputMatrix[0][row] - inputMatrix[row][col];
                System.out.print(subtraction[row][col] + " ");
            }
        System.out.print("\n");
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-28 12:18:52

根据对输出的描述,您需要一个三维数组来存储输出,因为对于每一对输入行,您将生成一个输出行。

代码语言:javascript
复制
for(int row1 = 0; row1 < inputMatrix.length; row1++){
   for(int row2 = 0; row2 < inputMatrix.length; row2++){
        for(int col = 0; col < inputMatrix[0].length; col++){
            subtraction[row1][row2][col] = inputMatrix[row1][col] - inputMatrix[row2][col];
        }
    }
}

如果必须具有二维输出,则可以将输出扁平化:

代码语言:javascript
复制
int outputRow = 0;
for(int row1 = 0; row1 < inputMatrix.length; row1++){
   for(int row2 = 0; row2 < inputMatrix.length; row2++){
        for(int col = 0; col < inputMatrix[0].length; col++){
            subtraction[outputRow][col] = inputMatrix[row1][col] - inputMatrix[row2][col];
        }
        outputRow++;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-07-28 12:38:06

subtraction[row][col] = inputMatrix[0][row] - inputMatrix[**row**][**col**];

你把你的索引搞混了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24994974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档