Skip to content

12. 打印数字图形

时间限制:1.000S 空间限制:32MB

题目描述

先要求你从键盘输入一个整数n(1<=n<=9),打印出指定的数字图形。

输入描述

输入包含多组测试数据。每组输入一个整数n(1<=n<=9)。

输出描述

对于每组输入,输出指定的数字图形。 注意:每行最后一个数字后没有任何字符。

输入示例

5

输出示例

    1
   121
  12321
 1234321
123454321
 1234321
  12321
   121
    1

解法一(模拟)

思路分析:

  1. 按照题目意思,将数字模拟输出即可

实现代码如下:

java
public class k_12_PrintDigitalGraphics {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n;  // 读取每组输入
        while (in.hasNext()) {
            n = in.nextInt();
            printDigital(n);
        }
    }
    private static void printDigital(int n) {
        for (int i = 1; i <= n; ++ i) {
            printNum(n, i);
        }
        for (int i = n-1; i >= 1; -- i) {
            printNum(n, i);
        }
    }
    private static void printNum(int n, int i) {
        for (int j = i; j < n; ++ j) {
            System.out.print(" ");
        }
        int j;
        for (j = 1; j <= i; ++ j) {
            System.out.print(j);
        }
        for (j = j-2; j >= 1; --j) {
            System.out.print(j);
        }
        System.out.println();
    }
}

运行结果如下:

运行时间: 457ms 消耗内存: 13684kb

复杂度分析:

  • 时间复杂度: O(n)
  • 空间复杂度: O(1)