数字金字塔的伪代码应该怎么写呀java的

import java.util.Scanner;

public class Main5 {
public static void main(String[] args) {

    //动态规划求最大值  --递归求解
    //先获取程序运行前的总毫秒数  //correntTimeMillis
    long dodo = System.currentTimeMillis();
    Scanner in = new Scanner(System.in);

    // 定义数组
    int[][] num = new int[1001][1001];
    // 定义n的值
    int n = in.nextInt();
    // 每行有i列,且从第一列开始 从上往下查找
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= i; j++)
            num[i][j] = in.nextInt();
    // 最后一行开始
    for (int i = n - 1; i >= 1; i--)
        for (int j = 1; j <= i; j++)
           // 求最大值
            num[i][j] += num[i + 1][j] > num[i + 1][j + 1] ? num[i + 1][j] : num[i + 1][j + 1];
    // 输出值
    System.out.println(num[1][1]);
    //再获取程序执行完毕的总毫秒数
    long zhix = System.currentTimeMillis();

    //输出两者之差 得到程序执行的时间
    //System.out.println(later - before);
    //晨旭执行前的时间*执行完毕后的=得到的时间  误差不断k次执行得到不小于10%
    System.out.println("程序运行时间:"+(zhix-dodo)+"ms");


}

}


    int n = 0,t=0,i=0,k=0;
        Scanner cin = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        n = cin.nextInt();
        k=n;
        for (  i = 0 ; i < n ;i++ ) {//塔的层数
            for(int j =k-1 ; j >0 ; j --) {//打印前半部分空格
             System.out.print(" ");
            }
            //打印数
            /**
             * 这是思路是利用控制层数的变量 i 控制每层前半部分该打印的数字是从多少开始,然后递减到1就停止
             */
            for( t=i+1   ;  t >0  ; t-- ) {
            System.out.print(t);
            }
            //后半部分
            /**
             * 后面部分第一打印是从2开始,因此利用控制层数的变量i要打印多少个数字,让p 一直递增直到不满足条件
             */
            for (int p = 1 ; p <i+1 ; p++) {
                System.out.print(p+1);
            }
            for(int j = k-1 ; j >0 ; j --) {//打印后半部分空格
                 System.out.print(" ");
                }
             System.out.println();
             k-=1;//控制每行的空格数
            }