package com.algorithm; /** * @Description 杨辉三角 * @author FuJianyong * 2015-1-22上午10:10:59 */ public class YangHui { public static void main(String[] args) { //初始化二维数组长度 int[][] yanghui = new int[10][]; /* * 动态初始化二维数组 * 第一步 杨辉三角初始化 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 */ for(int i=0;i<yanghui.length;i++) { yanghui[i] = new int[i]; } /* * 第二步 杨辉三角第一位和最后以为数值都是1 1 1 1 1 0 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 */ for(int i=0;i<yanghui.length;i++) { for(int j=0;j<i;j++) { if(i==0 || j==0 || j==yanghui[i].length-1) yanghui[i][j] = 1; } } /* * 第三步 杨辉三角第n行n列的数值等于n-1行n-1列(左上方)加上n-1行n列(正上方)的数值 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 */ for(int i=0;i<yanghui.length;i++) { for(int j=0;j<i;j++) { //处理剩下没赋值的数组 if(i!=0 && j!=0 && j!=yanghui[i].length-1) { yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j]; } } } /* * 输出杨辉三角 * 第二步可以和第三步合并 */ for(int i=0;i<yanghui.length;i++) { for(int j=0;j<i;j++) { System.out.print(yanghui[i][j] +"\t"); } System.out.println(); } } }