我正在尝试用 Java 解决数字模式问题。我已经编写了代码,并且希望有人可以对我现有的 sol 进行更改

问题描述 投票:0回答:1

所需输出

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

这是一道模式题,我需要用Java来解决它。

这是我的代码。

public class Pattern31 {
    public static void main(String[] args) {
        pattern31(4);
    }
static void pattern(int n){
        int originaln = n;
        n=2*n-1;
        for(int row = 0; row <=n; row++) {
            for (int col = 0; col <= n; col++) {
                int valueAtIndex = originaln - Math.min(Math.min(row, col), Math.min(n-row, n-col));
                System.out.print(valueAtIndex + " ");
            }
            System.out.println();
        }
    }

我目前使用此代码得到的输出。

4 4 4 4 4 4 4 4 
4 3 3 3 3 3 3 4 
4 3 2 2 2 2 3 4 
4 3 2 1 1 2 3 4 
4 3 2 1 1 2 3 4 
4 3 2 2 2 2 3 4 
4 3 3 3 3 3 3 4 
4 4 4 4 4 4 4 4 
java arrays multidimensional-array pattern-matching dsa
1个回答
0
投票

如果

2*n-1
是您要输出的矩阵的宽度和高度,则公式
n
是正确的,但这不是代码的其余部分使用
n
的方式。循环从 0 迭代到
n
。列数以及用于从右侧计算索引的公式(如
n-row
)也是如此。在所有这些情况下,您将
n
视为最后一列/行的索引。

在这种情况下,您应该将

n
定义为
2*n-2
。然后是最后一个索引,它比所需的大小(宽度/高度)小一个。

© www.soinside.com 2019 - 2024. All rights reserved.