杨辉三角问题????

来源:百度知道 编辑:UC知道 时间:2024/06/08 00:28:49
public class YangHui
{public static void main(String args[])
{
final int ROW=10;
int a[][]=new int[ROW+1][];
for(int i=0;i<=ROW;i++)
{
a[i]=new int[i+1]; //指定每行的列数

}
yanghui(a,ROW);
}

static void yanghui(int a[][],int ROW)
{

for(int i=0;i<=ROW;i++)
for(int j=0;j<=a[i].length-1;j++)
{
if(i==0||j==0||j==a[i].length-1)
a[i][j]=1;
else a[i][j]=a[i-1][j-1]+a[i-1][j];

}
for(int i=0;i<=ROW;i++)
{
for(int j=0;j<=a[i].length-1;j++)
System.out.print(a[i][j]+"\t");
System.out.println();
}

}
}
中j<=a[i].length-1的意思是什么啊?好的话绝对加分!!!!

首先你要注意的是,a是一个二维数组,你可以把它理解成为矩阵,而且从初始化a[][]=new int[ROW+1][]; 处我们可以看到,这个数组是11行的但具体有多少列,初始化处没给. 数组如果不确定出大小,是不行的,所以往下看!
for(int i=0;i<=ROW;i++)
{
a[i]=new int[i+1]; //指定每行的列数
}
可以把这个拆开看~~ a[0] = new int [1];这句话可能不太好理解,但是你想,定义一个一维的数组,我们用a = new int[1];这么写。那么
a[i] = new int[1];则代表了二维数组列数的确定.

所以j<a[i].length-1 就是小于每行的列数……

这用了JAVA中很独特的不规则数组

int a[][]=new int[ROW+1][];
for(int i=0;i<=ROW;i++)
{
a[i]=new int[i+1]; //指定每行的列数
}
这定义了一个不规则二维数组,每行包括行号+1个元素

以后访问时要对每行特殊处理下

在最后打印输出结果那段,可以试下for each语句
如:
for(int[] i:a)
{
for(int j:a[i])
System.out.print(a[i][j]+"\t");
System.out.println();
}