当前位置:   article > 正文

基础训练2-杨辉三角_任务描述 本关任务:用倒推法求杨辉三角并输出。 编程要求 请在右侧编辑器begin-en

任务描述 本关任务:用倒推法求杨辉三角并输出。 编程要求 请在右侧编辑器begin-en

杨辉三角解析

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的数字等于它两肩上数字的相加。

 
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3. public class Main {
  4. public static void main(String args[]) {
  5. Scanner sc = new Scanner(System.in);
  6. int n = sc.nextInt();
  7. int[][] arr = new int[n][n];
  8. for (int i = 0; i < n; i++)
  9. Arrays.fill(arr[i], 1);
  10. for (int i = 1; i < n; i++) {
  11. for (int j = 1; j < i; j++) {
  12. arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
  13. }
  14. }
  15. for (int i = 0; i < n; i++) {
  16. for (int j = 0; j <= i; j++) {
  17. System.out.print(arr[i][j] + " ");
  18. }
  19. System.out.println();
  20. }
  21. }
  22. }


循环迭代法:

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


  1. import java.util.Scanner;
  2. public class Main {
  3. public static void main(String args[]) {
  4. Scanner sc = new Scanner(System.in);
  5. int N = sc.nextInt();
  6. // n为行,r为列
  7. for (int n = 0; n < N; n++) {
  8. for (int r = 0; r <= n; r++) {
  9. int i = 1;
  10. long s = 1;
  11. while (i <= r) {
  12. // 第n行的第m个数和第n-m+1个数相等,
  13. // 即C(n-1,m-1)=C(n-1,n-m),这是组合数性质
  14. // 组合数计算方法:C(n,m)=n!/[m!(n-m)!]
  15. s = s * (n - i + 1) / i;
  16. i++;
  17. }
  18. System.out.print(s + " ");
  19. }
  20. System.out.println();
  21. }
  22. }
  23. }


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/901203
推荐阅读
相关标签
  

闽ICP备14008679号