杨辉三角的Java实现

来源:互联网 发布:系统优化的方法论 编辑:程序博客网 时间:2024/06/05 10:14

杨辉三角:

         1
        1 1
       1 2 1
      1 3 3 1
     1 4 6 4 1

--------------------------

 *    1
 *    1 1
 *    1 2 1
 *    1 3 3 1
 *    1 4 6 4 1

满足:1.第一列和对角线都是1

  2.后面行的某个数是前面一行对应前一列和当前列的数之和。

Java实现:

简单说明:处理的时候,最好是从第1行第1列开始,数组是从0开始的。为了好处理从第1行第1列。当然从第0行第0列也可以,不过比较麻烦。

下面代码:有控制台敲入一个数字,表示要输出杨辉三角的行数

package com.xaut.jianzhioffer;


import java.util.Scanner;


/*
 * 实现杨辉三角
 *        1
 *       1 1
 *      1 2 1
 *     1 3 3 1
 *    1 4 6 4 1 
 * ----------------   
 *    1
 *    1 1
 *    1 2 1
 *    1 3 3 1
 *    1 4 6 4 1
 *    
 * */


public class Solution {
    public static void main(String args[]){
    Scanner scanner = new Scanner(System.in);
    int level = scanner.nextInt();
    int [][] tran = new int[level+1][level+1];
    create(tran);
    print(tran);
    System.out.println("--------------------");
    print1(tran);
    
    }


private static void print1(int[][] tran) {
// TODO Auto-generated method stub
int level = tran.length - 1;
for(int i = 1;i<tran.length;i++){//从第一层开始
for(int m = level -i;m>0;m--){
System.out.print(" ");
}
for(int j = 1;j<tran[i].length;j++){
if(tran[i][j]!=0){
System.out.print(" "+tran[i][j]);
}
}
System.out.println();
}
}


private static void print(int[][] tran) {
// TODO Auto-generated method stub
for(int i = 1;i<tran.length;i++){//从第一层开始
for(int j = 1;j<tran[i].length;j++){
if(tran[i][j]!=0){
System.out.print(" "+tran[i][j]);
}

}
System.out.println();
}
}


private static void create(int[][] tran) {
for(int i = 1;i<tran.length;i++){//从第一层开始
for(int j = 1;j<tran[i].length;j++){
if(j==1 || i==j){
tran[i][j] = 1;
}else{
tran[i][j] = tran[i-1][j-1] + tran[i-1][j];
}
}
}
}
    
}

结果:

5
 1
 1 1
 1 2 1
 1 3 3 1
 1 4 6 4 1
--------------------
     1
    1 1
   1 2 1
  1 3 3 1
 1 4 6 4 1

原创粉丝点击