杨辉三角的Java实现

杨辉三角:

         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

    原文作者:杨辉三角问题
    原文地址: https://blog.csdn.net/cherry_chenrui/article/details/77853369
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞