A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

/*
   需求:打印杨辉三角形(行数可以键盘录入)
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1


        (a+b)^2  =  a^2 +2ab + b^2
        (a+b)^3  =  a^3 + 3a^2b + 3ab^2 + b^3

        分析:
                1.每一行都是一个数组
                2.整个三角 就可以看成是一个二维数组
               
                3.将二维数组中元素都赋值
                        1.把所有的元素都填成1
                        2.从第三行开始每一个数据是它上一行的前一列和它上一行的本列之和。
             本行本列 = 上行前列 + 上行本列

                         arr[x][y] = arr[x-1][y-1] + arr[x-1][y];
                       
                4.输出三角相当于遍历二维数组

               

*/

class YangHui{

        public static void main(String[] args){
                yangHui(10);
               
               
        }


        public static void yangHui(int i){
                //创建二维数组
                int[][] arr = new int[i][i];
                //遍历赋值,都填成1  
                for ( int  x=0; x< arr.length ;x++ ){
                        for (int y=0; y<arr[x].length; y++){
                                arr[x][y] = 1;
                        }
                }


                //把从第三行开始,所有的1的值按规律改写
                // 本行本列 = 上行前列 + 上行本列
                // arr[x][y] = arr[x-1][y-1] + arr[x-1][y];


                for ( int x=2; x<arr.length; x++){
                        for (int y=1 ; y<= x-1  ;y++){   // 控制这个y ,也是相当于打三角形,并且不能包含最后的那个1 ,所以x-1
                                arr[x][y] = arr[x-1][y-1] + arr[x-1][y];
                        }
                       
                }

                print2Array(arr);
               
        }

        //遍历二维数组
        public  static void print2Array(int[][] arr){
       
                for ( int  x=0; x< arr.length ;x++ ){

                        for (int y=0; y<=x; y++){  // 遍历出全部,但是只要三角形,所以  arr[x].length 改为x

                                System.out.print(arr[x][y] +" ");
                        }
                        System.out.println();
                }
       
        }
}


您需要登录后才可以回帖 登录 | 加入黑马