java - java中的螺旋矩阵

标签 java

我正在尝试根据用户输入创建一个矩阵。我想开始如下所示

输入:3

输出:创建如下所示的 3x3 矩阵,从 1 开始,然后是 2,然后添加前两个数字。

3   2    1
5   55   34  
8   13   21

如果用户输入为 4,那么它应该创建一个 4x4 矩阵。

最佳答案

试试这个。

static int[][] DIRS = {{0, -1}, {1, 0}, {0, 1}, {-1, 0}};

static boolean canGo(int[][] a, int n, int r, int c) {
    if (r < 0 || r >= n)
        return false;
    if (c < 0 || c >= n)
        return false;
    if (a[r][c] > 0)
        return false;
    return true;
}

static int[][] solve(int n) {
    int max = n * n;
    int[][] array = new int[n][n];
    int dir = 0, prev = 1, cur = 1;
    int row = 0, col = n - 1;
    for (int i = 1; i <= max; ++i) {
        array[row][col] = cur;
        if (!canGo(array, n, row + DIRS[dir][0], col + DIRS[dir][1]))
            dir = (dir + 1) % DIRS.length;
        row += DIRS[dir][0];
        col += DIRS[dir][1];
        int temp = cur;
        cur = prev + cur;
        prev = temp;
    }
    return array;
}

int[][] a = solve(3);
for (int[] row : a)
    System.out.println(Arrays.toString(row));

结果:

[3, 2, 1]
[5, 55, 34]
[8, 13, 21]

关于java - java中的螺旋矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50098876/

相关文章:

java - 将 "private"添加到枚举字段会更改静态上下文

Java RMI 在没有绑定(bind)的情况下返回对远程对象的引用

java - 以编程方式查找给定的 IProject 对象是否与存储库共享

java - 使用 Java 文件/IO API 复制目录同时保留符号链接(symbolic link)

java - 如何获取Android ListView中imageView的位置

java - java中两个项目共享的资源

java - 无法检索日期

java - 如何在Java中创建一个二维数组,其中接下来的每一行都是前一行的平方?

java - 具有类层次结构的 UML 类图组合

java - 保存、获取和设置立方体的长度(扩展类)