题目:
打印杨辉三角前20行
思路:
- 每个数等于它上方两数之和。
- 每行数字左右对称,两边是1
- 第n行的数字有n+1项
实现:
二维数组实现
public class YangHui {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 20;
int a[][] = new int [n][2*n-1];
//最外面一层为0
for(int i=0;i<n;i++)
{
a[i][n-i-1] = 1;
a[i][n+i-1] = 1;
}
//里面每个等于它头上的两个的和
for(int i=2;i<n;i++)
{
for(int j=n-i+1;j<n-2+i;j=j+2)
{
a[i][j] = a[i-1][j-1] + a[i-1][j+1];
}
}
//打印输出,若值为零打印空格
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
if(a[i][j] != 0)
System.out.print(a[i][j]+" ");
else
System.out.print(" ");
}
System.out.println();
}
}
static void PrintArray(int a[][])
{
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
}
一维数组实现
public class YangHui2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]=new int[20];
a[0]=a[1]=1;
System.out.println(a[0]);
System.out.println(a[0]+" "+a[1]);
for(int i=2;i<20;i++)
{
a[i]=1;
for(int k=i-1;k>0;k--)
{
a[k]=a[k-1]+a[k];
}
for(int j=0;j<=i;j++)
System.out.print(a[j]+" ");
System.out.println();
}
}
}