A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vince 中级黑马   /  2015-8-6 09:40  /  460 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
  杨晖三角
  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开始那就是从第二个数组啊

3 个回复

倒序浏览
杨辉三角形使用的是二维数组,x从2开始,是因为从第三行开始才有规律。2是外围数组的角标。
回复 使用道具 举报
先回答第二个问题:观察杨辉三角的样式,明显每行第一个数和最后一个数是1.
所有有了:
  1.    for(int x=0;x<n;x++){
  2.                         arr[x][0]=1;
  3.                         arr[x][x]=1;
  4.                 }
复制代码
然后从第三行开始(计算机中从0开始计数,所以是x=2)出现杨辉三角的特征,即弟X行的第y个数等于第x-1行的y-1个数和第y个数的和。
  1.    for(int x=2;x<n;x++){
  2.                         for(int y=1;y<n;y++){
  3.                                 arr[x][y]=arr[x-1][y-1]+arr[x-1][y];
  4.                               
  5.                         }
复制代码



回复 使用道具 举报
回答第一个问题:这个n是杨辉三角的行数,为什么要是数组的长度呢?????你没有理解算法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马