基础训练2-杨辉三角

杨辉三角解析

1

1         1

1       2       1

1       3       3       1

1       4       6       4       1

观察规律:

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

 

二维数组法:

先把整个二维数组初始化为1,这样就解决了杨辉三角中第一列的数字都是1每行的最后一个数字是1的问题,接下来从每行第一个非1的数字开始计算,每个非1的数字等于它两肩上数字的相加。

 

import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[][] arr = new int[n][n];
		for (int i = 0; i < n; i++)
			Arrays.fill(arr[i], 1);
		for (int i = 1; i < n; i++) {
			for (int j = 1; j < i; j++) {
				arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
			}
		}
		for (int i = 0; i < n; i++) {
			for (int j = 0; j <= i; j++) {
				System.out.print(arr[i][j] + " ");
			}
			System.out.println();
		}
	}
}


循环迭代法:

利用组合数的性质:由于杨辉三角的第i+1行是
的展开式的系数,因此我们利用此性质,
第n行的第m个数和第n-m+1个数相等

《基础训练2-杨辉三角》

import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		// n为行,r为列
		for (int n = 0; n < N; n++) {
			for (int r = 0; r <= n; r++) {
				int i = 1;
				long s = 1;
				while (i <= r) {
					// 第n行的第m个数和第n-m+1个数相等,
					// 即C(n-1,m-1)=C(n-1,n-m),这是组合数性质
					// 组合数计算方法:C(n,m)=n!/[m!(n-m)!]
					s = s * (n - i + 1) / i;
					i++;
				}
				System.out.print(s + " ");
			}
			System.out.println();
		}
	}
}


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