A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.util.*;

  2. public class HelloJava
  3. {
  4.         //使用不规则二维数组
  5.         public static void printYanghuiTriangle_1(int n)
  6.         {
  7.                 int[][] a = new int[n][];
  8.                
  9.                 for (int i = 0; i < n; ++i)
  10.                 {
  11.                         a[i] = new int[i + 1];
  12.                         a[i][0] = a[i][i] = 1;
  13.                         for (int j = 1; j < i; ++j)
  14.                                 a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
  15.                 }
  16.                
  17.                 for (int[] x : a)
  18.                 {
  19.                         for (int e : x)
  20.                                 System.out.print(e + " ");
  21.                         System.out.println();
  22.                 }
  23.         }
  24.        
  25.         //使用长度为n的一维数组
  26.         public static void printYanghuiTriangle_2(int n)
  27.         {
  28.                 int[] a = new int[n];
  29.                
  30.                 for (int i = 0; i < n; ++i)
  31.                 {
  32.                         a[i] = 1;
  33.                         for (int j = i - 1; j > 0; --j)
  34.                                 a[j] += a[j - 1];
  35.                        
  36.                         for (int j = 0; j <= i; ++j)
  37.                                 System.out.print(a[j] + " ");
  38.                         System.out.println();;
  39.                 }
  40.         }
  41.        
  42.         //使用长度为(n + 1) / 2的一维数组
  43.         public static void printYanghuiTriangle_3(int n)
  44.         {
  45.                 System.out.println(1);
  46.                 if (n == 1)
  47.                         return;
  48.                 System.out.println(1 + " " + 1);
  49.                 if (n == 2)
  50.                         return;
  51.                
  52.                 int[] a = new int[(n + 1) / 2];
  53.                 a[0] = 1;
  54.                
  55.                 for (int i = 2; i < n; ++i)
  56.                 {
  57.                         int lastIndex = i / 2;
  58.                        
  59.                         if (i % 2 == 0)
  60.                                 a[lastIndex] = a[lastIndex - 1] << 1;
  61.                         else
  62.                                 a[lastIndex] += a[lastIndex - 1];
  63.                         for (int j = lastIndex - 1; j > 0; --j)
  64.                                 a[j] += a[j - 1];
  65.                        
  66.                         for (int j = 0; j <= lastIndex; ++j)
  67.                                 System.out.print(a[j] + " ");
  68.                         if (i % 2 == 1)
  69.                                 System.out.print(a[lastIndex] + " ");
  70.                         for (int j = lastIndex - 1; j >= 0; --j)
  71.                                 System.out.print(a[j] + " ");
  72.                         System.out.println();
  73.                 }
  74.         }
  75.        
  76.         //不使用数组
  77.         public static void printYanghuiTriangle_4(int n)
  78.         {
  79.                 for (int i = 0; i < n; ++i)
  80.                 {
  81.                         int x = 1;
  82.                         System.out.print(x + " ");
  83.                        
  84.                         for (int j = 1; j <= i; ++j)
  85.                         {
  86.                                 x = x * (i - j + 1) / j;
  87.                                 System.out.print(x + " ");
  88.                         }
  89.                         System.out.println();
  90.                 }
  91.         }
  92.        
  93.         public static void main(String[] args)
  94.         {
  95.                 Scanner sc = new Scanner(System.in);
  96.                 printYanghuiTriangle_1(sc.nextInt());
  97.                 printYanghuiTriangle_2(sc.nextInt());
  98.                 printYanghuiTriangle_3(sc.nextInt());
  99.                 printYanghuiTriangle_4(sc.nextInt());
  100.                 sc.close();
  101.         }
  102. }
复制代码


评分

参与人数 1黑马币 +20 收起 理由
OCTSJimmy + 20 不错,无数组研究出来了

查看全部评分

6 个回复

倒序浏览
对于第四种方法,需要二项式定理和组合数的相关知识。
回复 使用道具 举报
看不懂,但是很流弊的样子
回复 使用道具 举报
。。。。。。。。。。。。。。。。。
回复 使用道具 举报
感谢分享 我最开始只用了二维数组来编程。
回复 使用道具 举报
越往后面代码也越简单!
回复 使用道具 举报
Sayman 中级黑马 2015-10-22 15:58:08
7#
学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马