蓝桥杯第五届JavaC组杨辉三角问题解决方法

此题是蓝桥杯第五届Java组考试题目之一,一道解决打印杨辉三角的填空题

以下是具体内容:

 

 

Question:


二项式的系数规律,我国数学家很早就发现了。

如【图1.png】,我国南宋数学家杨辉1261年所著的《详解九章算法》一书里就出现了。

其排列规律:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

如下的程序,用来建立N行的杨辉三角形。请填写划线部分缺少的代码。

注意:只填写划线部分的代码,不要填写任何多余的内容。

 

public class A
{
public static void main(String[] args)
{
int N = 8;
int[][] a = new int[N][N] ;

for(int i=0; i<N; i++){
a[i][0] = 1;
a[i][i] = 1;
}

for(int i=1; i<N; i++){
for(int j=1; j<i; j++) _____________________________; //填空
}

for(int i=0; i<N; i++){
for(int j=0; j<=i; j++) System.out.print(String.format("%-5d", a[i][j]));
System.out.println();
}
}
}

 

 Answer:

 1 public class Day1
 2 {
 3     public static void main(String[] args)
 4     {
 5         int N = 8;
 6         //抛开题目来讲,如果想要打印更多行杨辉三角,改N的数值即可
 7         int[][] a = new int[N][N] ;
 8         //定义二维数组,题目中的杨辉三角数目总共8行8列,N = 8;
 9         
10         
11         for(int i=0; i<N; i++){
12             a[i][0] = 1;
13             a[i][i] = 1;
14         }
15         //定义每一行的第一个数字与最后一个数字的值都是为数字1
16         
17         
18         for(int i=1; i<N; i++){
19             for(int j=1; j<i; j++) 
20                 a[i][j]=a[i-1][j-1]+a[i-1][j];  //填空
21         }
22         //这一步主要看算法,杨辉三角的外围已经做好,只差往里边填写数字,找其相应的规律,进行填补
23         
24         
25         for(int i=0; i<N; i++){
26             for(int j=0; j<=i; j++)    System.out.print(String.format("%-5d", a[i][j]));
27             System.out.println();
28         }    
29         //将其打印输出,String.format();的作用是进行字符串格式化,重新按照指定的格式进行输出,"-"的
30         //作用是靠左,注意一点,print,不要加ln
31         
32         
33     }
34 }

 

总结:

1:知识是靠自己一步一步测试代码、查找资料,自己总结来的,这样的方法比较牢固,记得扎实,如果不测试,只靠眼睛看,也就只是看看。

2:遇到认为难的题目,不要慌,不要否定自己,先静下心来,仔细分析题目,找方法解决问题

3:在时间允许的范围内,先自己动脑子想,如果实在不会,再查阅资料,做总结

 

如有个别回答错误,评论指出,我必更改,谢谢!😝

posted @ 2019-01-20 21:01  高欣的博客  阅读(834)  评论(0编辑  收藏  举报