杨辉三角特征
- 第一行有 1 个元素, 第 n 行有 n 个元素
- 每一行的第一个元素和最后一个元素都是 1
- 从第三行开始, 对于非第一个元素和最后一个元素的元素。即: yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j]
实现方式一
public class yanghuiTriangle {
/**
* 1. 第一行有 1 个元素, 第 n 行有 n 个元素
* 2. 每一行的第一个元素和最后一个元素都是 1
* 3. 从第三行开始, 对于非第一个元素和最后一个元素的元素。即:
* yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
*/
public static void main(String[] args) {
// 显示最大行数
int maxNum = 10;
// 声明并初始化二维数组
int[][] yanHui = new int[maxNum][];
// 给数组的元素赋值
for (int i = 0; i < yanHui.length; i++) {
yanHui[i] = new int[i + 1];
// 给首末元素赋值
yanHui[i][0] = yanHui[i][i] = 1;
// 给每行的非首末元素赋值
for (int j = 1; j < yanHui[i].length - 1; j ++) {
yanHui[i][j] = yanHui[i-1][j] + yanHui[i-1][j-1];
}
}
//遍历二维数组
for (int i = 0; i < yanHui.length; i++) {
for (int j = 0; j < yanHui[i].length; j ++) {
System.out.print(yanHui[i][j] + " ");
}
System.out.println();
}
}
}
实现方式二
public static void main(String[] args)
{
final int NMAX = 10;
// allocate triangular array
int[][] odds = new int[NMAX + 1][];
for (int n = 0; n <= NMAX; n++)
odds[n] = new int[n + 1];
// fill triangular array
for (int n = 0; n < odds.length; n++)
for (int k = 0; k < odds[n].length; k++)
{
/*
* compute binomial coefficient n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3*...*k)
*/
int lotteryOdds = 1;
for (int i = 1; i <= k; i++)
lotteryOdds = lotteryOdds * (n - i + 1) / i;
odds[n][k] = lotteryOdds;
}
// print triangular array
for (int[] row : odds)
{
for (int odd : row)
System.out.printf("%4d", odd);
System.out.println();
}
}