黑马程序员技术交流社区
标题:
Java杨辉三角问题
[打印本页]
作者:
vince
时间:
2015-8-6 09:40
标题:
Java杨辉三角问题
/*
杨晖三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
*/
import java.util.Scanner;
class YangHuiSanJiao{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("请输入一个数字");
int n = s.nextInt();
int[][] arr = new int[n][n];
for(int x=0;x<n;x++){
arr[x][0]=1;
arr[x][x]=1;
}
for(int x=2;x<n;x++){
for(int y=1;y<n;y++){
arr[x][y]=arr[x-1][y-1]+arr[x-1][y];
}
}
for(int x=0;x<n;x++){
for(int y=0;y<=x;y++){
System.out.print(arr[x][y]+"\t");
}
System.out.println();
}
}
}
问题:
1.全程为什么n不是arr.length
2.for(int x=2;x<n;x++){
for(int y=1;y<n;y++){
arr[x][y]=arr[x-1][y-1]+arr[x-1][y];
X为什么是从2开始,2开始那就是从第二个数组啊
作者:
JustForYou
时间:
2015-8-6 09:56
杨辉三角形使用的是二维数组,x从2开始,是因为从第三行开始才有规律。2是外围数组的角标。
作者:
yefeidd
时间:
2015-8-6 09:57
先回答第二个问题:观察杨辉三角的样式,明显每行第一个数和最后一个数是1.
所有有了:
for(int x=0;x<n;x++){
arr[x][0]=1;
arr[x][x]=1;
}
复制代码
然后从第三行开始(计算机中从0开始计数,所以是x=2)出现杨辉三角的特征,即弟X行的第y个数等于第x-1行的y-1个数和第y个数的和。
for(int x=2;x<n;x++){
for(int y=1;y<n;y++){
arr[x][y]=arr[x-1][y-1]+arr[x-1][y];
}
复制代码
作者:
yefeidd
时间:
2015-8-6 09:58
回答第一个问题:这个n是杨辉三角的行数,为什么要是数组的长度呢?????你没有理解算法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2