某校2016年专硕编程题-杨辉三角

网友投稿 556 2022-11-08

某校2016年专硕编程题-杨辉三角

某校2016年专硕编程题-杨辉三角

编写程序,从键盘输入正整数n(n 不大于20 ),打印一个n层的杨辉三角型。例如从从键盘输入4,输出如下图形。

​​ 1 11 121 1331 ​​

解决杨辉三角的思路

观察打印的矩阵格式:第2行开始,值 = 同列的上一行的值+上一行的后一列的值。

Java实现

生成杨辉三角矩阵

public static int[][] yang(int n) { if (n > 20 || n < 1) { return null; } int[][] a = new int[n][n]; //矩阵 a[0][0] = 1; //杨辉三角的第一行 for (int i = 1; i < n ; i++) { for (int j = 0; j < n; j++) { if (j == 0|| j == n) a[i][j] = 1; else a[i][j] = a[i-1][j]+a[i-1][j-1]; } } return a;}

时间复杂度:O(n^2)空间复杂度:O(n^2)

打印杨辉三角

public static void yang() { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); if (n > 20 || n < 1) { return ; } int[][] a = new int[n][n]; //矩阵 a[0][0] = 1; //杨辉三角的第一行 for (int i = 1; i < n ; i++) { for (int j = 0; j < n; j++) { if (j == 0|| j == n) a[i][j] = 1; else a[i][j] = a[i-1][j]+a[i-1][j-1]; } } for (int i = 0; i < a.length; i++) { for (int j = a.length-1; j >= 0 ; j--) { if (a[i][j] == 0) System.out.print(" "); else System.out.print(a[i][j]); } System.out.print("\n"); }}

Go实现

func yhTriangle(n int) [][]int { var a = make([][]int,n) for i := range a { a[i] = make([]int,n); } a[0][n-1] = 1 for i := 1; i < n; i++ { for j := 0; j < n; j++ { if j == n-1 { a[i][j] = 1 }else { a[i][j] = a[i-1][j]+a[i-1][j+1] } } } return a}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring Boot 对Redis缓存进行Json格式序列化缓存
下一篇:关于SpringCloud Ribbon替换轮询算法问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~