1 //采用一个二维数组打印杨辉三角
2 class Yanghui1 {
3 public static void main(String[] args)
4 {
5 //设置杨辉三角的行数
6 int num = 10;
7
8 //申请二维数组存放杨辉三角数值
9 int[][] yangHui = new int [num][];
10 for(int i = 0; i < yangHui.length; i ++)
11 yangHui[i] = new int[i + 1];
12
13 //利用杨辉三角的计算公式,初始化数组
14 for(int i = 0; i < yangHui.length; i ++)
15 for(int j = 0; j < yangHui[i].length; j ++)
16 {
17 //每一行第一个数和最后一个数都为1
18 yangHui[i][0] = yangHui[i][i] = 1;
19
20 if(i > 1 && j > 0 && j < i)
21 //杨辉三角的值等于其上一层两个值之和
22 yangHui[i][j] = yangHui[i - 1][j] + yangHui[i -1][j -1];
23 }
24
25 //遍历数组,以输出
26 for(int i = 0; i < yangHui.length; i ++)
27 {
28 for(int j = 0; j < (num - i - 1) / 2; j ++)
29 System.out.print("\t");
30 for(int j = 0; j < yangHui[i].length; j ++)
31 System.out.print(yangHui[i][j] + "\t");
32
33 System.out.println();
34 }
35 }
36
37 }
38
39 //采用两个一维数组打印杨辉三角
40 class YangHui2
41 {
42 public static void main(String[] args)
43 {
44 int num = 20;
45
46 //申请UP数组用以存储上一层的数据
47 int[] up = new int[num];
48 for(int i = 0; i <= num; i ++)
49 {
50 //申请a数组用以存放本层的运算结果
51 int[] a = new int[i];
52 for(int j = 0; j < i; j ++)
53 {
54 //将本层第一个和最后一个数值赋值为1
55 if(j == 0 || j == i)
56 a[j] = up[j] = 1;
57
58 //当从第三行起,非首尾数字的值等于上方两数只和
59 if(i > 2 && j !=0 && j != i )
60 a[j] = up[j - 1] + up[j];
61 }
62
63 //将本层的运算结果存到up数组中,以供一下次运算使用
64 for(int k = 0; k < i; k ++)
65 up[k] = a[k];
66
67 //打印本层数字
68 for(int k = 0; k < (num - i - 1) / 2; k ++)
69 System.out.print("\t");
70 for(int k = 0; k < i; k ++)
71 System.out.print(a[k] + "\t");
72
73 System.out.println();
74 }
75 }
76 }
77
78 //采用一个一维数组打印杨辉三角
79 class YangHui3
80 {
81 public static void main(String[] args)
82 {
83 int num = 10;
84
85 //申请数组存放杨辉三角的数值
86 int yangHui[] = new int[(1 + num) * num / 2];
87 for(int i = 0; i < num; i ++)
88 {
89 for(int j = 0; j < (num - i - 1) / 2; j ++)
90 System.out.print("\t");
91
92 //temp表示已经存储的数字个数
93 int temp = (1 + i) * i / 2;
94 for(int j = 0; j <= i; j ++)
95 {
96 //每一层的首尾数值为1
97 if(j == 0 || j == i)
98 yangHui[temp + j] = 1;
99
100 else
101 //非首尾数值为上面两数之和
102 yangHui[temp + j] = yangHui[temp + j - i] + yangHui[temp + j - i - 1];
103 System.out.print(yangHui[temp + j] + "\t");
104 }
105 }
106 System.out.println();
107 }
108 }