黑马程序员技术交流社区

标题: 点招面试十大难题之一:杨辉三角 [打印本页]

作者: DD1dog    时间: 2016-5-19 18:18
标题: 点招面试十大难题之一:杨辉三角
class Triangle {
        public static void main(String[] args) {
                //a[i][j] = a[i-1][j-1] + a[i-1][j]
                int n = 10;
               
                /*生成杨辉三角,用二维数组,但空间利用率只有1/2*/
                int[][] a = new int[n][n];
                for(int i=0; i<n; i++) {
                        for(int j=0; j<n; j++) {
                                if(i<2) {
                                        a[i][j] = 1;
                                } else{
                                        if(j == 0 || j == i) {
                                                a[i][j] = 1;
                                        } else {
                                                a[i][j] = a[i-1][j-1] + a[i-1][j];
                                        }
                                }
                        }
                }
                printArr(a);
        }
        public static void printArr(int[][] a) {
                for(int i=0; i<a.length; i++) {
                        for(int j=0; j<=i; j++) {
                                System.out.print(a[i][j] + " ");
                        }
                        System.out.println();
                }
        }
}
作者: ppaapc    时间: 2016-5-19 18:19
挺不错的 字词一下
作者: 729524251    时间: 2016-5-19 19:14
表示看不懂·
作者: okchenyang44    时间: 2016-5-19 20:16
看就感觉要走的路还
作者: loop    时间: 2016-5-19 20:41
表示什么是杨辉三角都不知道
作者: Belive丶Me    时间: 2016-5-19 21:15
loop 发表于 2016-5-19 20:41
表示什么是杨辉三角都不知道

http://baike.so.com/doc/5391358-5628080.html
你有必要看一下
作者: TCK8888    时间: 2016-5-19 22:34
换个算法看看
  1. import java.util.Scanner;

  2. /**
  3. * 杨辉三角
  4. *
  5. * @author Administrator
  6. *
  7. */
  8. public class YH3J {
  9.         public static void main(String[] args) {
  10.                 System.out.print("输入层数:");
  11.                 Scanner sc = new Scanner(System.in);
  12.                 int n = sc.nextInt() + 1;
  13.                 int[][] a = new int[n][n];
  14.                 a = work(a, n - 1);

  15.                 printArray(n, a);
  16.         }

  17.         /*
  18.          * 杨辉三角算法
  19.          */
  20.         public static int[][] work(int[][] a, int n) {
  21.                 a[n][0] = 1;
  22.                 for (int i = 1; i < n; i++) {
  23.                         a[n][i] = work(a, n - 1)[n - 1][i - 1] + work(a, n - 1)[n - 1][i];
  24.                 }
  25.                 return a;
  26.         }

  27.         /*
  28.          * 遍历数组
  29.          */
  30.         public static void printArray(int n, int[][] a) {
  31.                 for (int i = 0; i < n; i++) {
  32.                         for (int j = 0; j < i; j++) {
  33.                                 System.out.print(a[i][j] + "\t");
  34.                         }
  35.                         System.out.println();
  36.                 }
  37.         }
  38. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2