杨辉三角的打印(Java)

//
//输入指定的行数,打印杨辉三角
//
//每个数等于它上方两数之和。
//每行数字左右对称,由1开始逐渐变大。
//第n行的数字有n项。
//
//
//
//可从打印菱形的思想出发:?????

// 存在问题: 随着行数的增加,数字增大,占用空间增大,慢慢变得不“对称”。
package com.day16;
import java.util.Scanner;
public class testYangHuiSanJiao{
    public static Scanner Sc =new Scanner(System.in);
    
    
    //初始化行数组,是每一行数组第一元素为1;
    public static int[][] inital(int [][] ary){
        
        for( int i=0;i<=ary.length-1;++i){
            
            ary [i] = new int [i+1];  //每行元素个数本等于行数i,
                                      //但注意到 数组是从 0 开始的,故行数组初始化为[i+1]的大小
            ary[i][0]=1;//首元素初始化为1;   
            ary[i][i]=1; //末元素初始化为1;
        }
                
        int row,colum;
        for(row = 2;row <= ary.length-1;row++){  //前两行初始化已完成,从第三行开始
            for(colum = 1;colum < row;colum++){  //每一行数组第一个元素(下标为0)已初始化为1,
                                                 //从第二个元素(下标为1)开始
                                                 //末元素已初始化为1,故column < row ;
                
                ary[row][colum]=ary[row-1][colum-1]+ary[row-1][colum];
                
            }
        }
        
        
//        //Check row ary[][]
//        
//        for(int i = 0; i<=ary.length-1;i++){
//            for(int j = 0; j<=i;j++){  //初始化大小决定   j<=i
//                System.out.print(ary[i][j]+" ");
//            }
//            System.out.println();
//                
//        }
//        //测试通过,初始化正确;
        
        
        return ary;
        
    }
    
    public static void prtyhsj (int [][] ary){
        
        int cbkn= ary.length-0 ;
        for(int row = 0;row <= ary.length-1;row++){
            //每行首先打印相应的空格;
            for(int i = cbkn ; i > 0;i--){
                System.out.print(" ");
            }
            //在打印相应行数组的元素+空格;
            for(int col = 0;col <= row; col++){
                System.out.print(ary[row][col]);
                System.out.print(" ");
            }
            //打印后续对称连续空格
            for(int i = cbkn;i > 0;i--){
                System.out.print(" ");
            }
            cbkn--;
            
            System.out.println();//一行打印结束执行换行
        }
        
        
        
        
        
    }
    public static void main (String [] args){
        System.out.println("Please input row:");
        int rownum = Sc.nextInt();
        System.out.println("Printing "+rownum+" row YHSJ");
        
        //定义二维数组,第一维为行数组,并初始化
        int [][] rowary = new int [rownum][] ;
        
        inital(rowary);
        prtyhsj(rowary);
            
                
    }
}

猜你喜欢

转载自www.cnblogs.com/Walker-r/p/10586087.html