代码之家  ›  专栏  ›  技术社区  ›  Aditi

我正在尝试用Java解决一个数字模式问题。我已经写了代码,如果有人能对我现有的sol进行更改,我将不胜感激

  •  -3
  • Aditi  · 技术社区  · 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 
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   trincot Jakube    1 年前

    公式 2*n-1 是正确的,如果 n 是要输出的矩阵的宽度和高度,但其余代码不是这样使用的 n 。循环从0迭代到 n 包括。列数和用于从右侧计算索引的公式(如 n-row ). 在所有这些情况下,你治疗 n 作为最后一列/行的索引。

    在这种情况下,您应该定义 n 2*n-2 。然后是最后一个索引,它比所需的大小(宽度/高度)小一个。