zoukankan      html  css  js  c++  java
  • java实现三角螺旋阵

    方阵的主对角线之上称为“上三角”。
    请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。
    例如:当n=3时,输出:
    1 2 3
    6 4
    5
    当n=4时,输出:
    1 2 3 4
    9 10 5
    8 6
    7
    当n=5时,输出:
    1 2 3 4 5
    12 13 14 6
    11 15 7
    10 8
    9

    程序运行时,从标准输入获得整数n(3~20)
    程序输出:方阵的上三角部分。
    要求格式:每个数据宽度为4,右对齐。

    package com.liu.ex9;
    
    import java.util.Scanner;
    
    
    public class Main {
        
        public void initArray(int[][] arrayA) {
            for(int i = 0;i < arrayA.length;i++)
                arrayA[i] = new int[arrayA.length - i];
        }
        
        public void dfs(int[][] arrayA, int row, int num) {
            if(row >= arrayA.length / 2)
                return;
            //填充上方第一行
            for(int i = row;i < arrayA[row].length - row;i++)
                arrayA[row][i] = num++;
            //填充后续每一行右边最后一个元素
            for(int i = row + 1;i < arrayA[row].length - row;i++)
                arrayA[i][arrayA[i].length - 1 - row] = num++;
            //填充后续每一行开始左边第一个元素
            for(int i = arrayA[row].length - 2 - row;i > row;i--)
                arrayA[i][row] = num++;
            dfs(arrayA, row + 1, num);
        }
        
        public void printResult(int[][] arrayA) {
            for(int i = 0;i < arrayA.length;i++) {
                for(int j = 0;j < arrayA[i].length;j++)
                    System.out.printf("%4d",arrayA[i][j]);
                System.out.println();
            }
        }
        public static void main(String[] args) {
            Main test = new Main();
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            int[][] arrayA = new int[n][];
            test.initArray(arrayA);
            test.dfs(arrayA, 0, 1);
            test.printResult(arrayA);
        }
    }
    
  • 相关阅读:
    2016-2017-2 201671010101Java
    2016-2017-2 201671010101Java
    2016-2017-2java 20167101010101
    2016-2017-2java20167101010101
    201671010101 2016-2017-2《java程序设计》
    201671010101 2016-2017-2《java程序设计》
    201671010101 2016-2017-2《java程序设计》
    201671010101 2016-2017 -2《java程序设计》
    201671010101 2016-2017-2《java程序设计》
    常见的DOS命令
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947935.html
Copyright © 2011-2022 走看看