今天学习到二维数组,前面几天复习的一维数组,已经实现了几种重要的排序和查找算法,下面用二位数组实现打印杨辉三角,以便后续自己查阅翻看。
首先分析杨辉三角的特点
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
就是说第一列和对角线都是1,其他元素都是它正上方的元素与它左上方元素之和。 那么我们可以用二维数组来实现。
具体实现如下
package com.yanghuisanjao;
//要打印row行的杨辉三角
public class Yanghui {
public static void yangHui(int row){
//传进参数 row行的杨辉三角
int [][] yang=new int[row][row];
for(int i=0;i<row;i++){
for(int j=0;j<=i;j++){
//第一列和对角线的值为1
if(j==0||j==i){
yang[i][j]=1;
}else{
//非对角线的元素是其正上方和其最上方元素的和
yang[i][j]=yang[i-1][j]+yang[i-1][j-1];
}
}
}
for(int i=0;i<row;i++){
for(int j=0;j<=i;j++){
System.out.print(yang[i][j]+"");
}
System.out.println("\n");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
yangHui(8);
}
}