赞
踩
杨辉三角解析
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();
- }
- }
- }
循环迭代法:
- 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();
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。