java - 用曼哈顿距离模式填充二维数组

标签 java arrays algorithm for-loop multidimensional-array

我正在尝试为算法做这个作业,他们要求我像这样填充一个二维数组:

4 3 2 3 4
3 2 1 2 3
2 1 0 1 2
3 2 1 2 3
4 3 2 3 4

我在 java 中试过这个:

int[][] array = new int[5][5];
for (int i = 0; i < array.length; i++) {
    for (int j = 0; j < array[i].length; j++) {
        array[i][j] = Math.abs(i - j);
    }
}

但它给了我这样的东西:

0 1 2 3 4
1 0 1 2 3
2 1 0 1 3
3 2 1 0 1
4 3 2 1 0

虽然这不是一回事,但它是我发现的最接近的东西。我用 Java 编写了代码,但它可以用任何其他语言编写……我认为重要的是“公式”。所以如果你能帮我解决这个问题就好了,我试着在网上找代码但是我没有找到任何东西......谢谢。

最佳答案

看起来您正在寻找到中心的距离。所以你首先要计算这个点:

int center = array.length / 2; //assuming a quadratic array

那么,计算距离就很简单了:

//for ...
array[i][j] = Math.abs(i - center) + Math.abs(j - center);

关于java - 用曼哈顿距离模式填充二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31743188/

相关文章:

algorithm - 快速排序变体中的比较次数

java - WSSecurityException : The security token could not be authenticated or authorized

Java math.random查询,四舍五入(概念理解)

java - 无法使用 selenium 从文本字段获取文本

r - 将数组操作为 BASE R 中的 data.frame

string - Knuth-Morris-Pratt 算法中的模式前缀函数计算

java - 为什么 Kotlin 解释 Brainfuck 的速度比 Java 快得多?

c# - C#中的声音数组

java - 如何在freemarker中通过键值访问json值?

c# - C#中的MergeSort算法