蓝桥杯第五届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:在时间允许的范围内,先自己动脑子想,如果实在不会,再查阅资料,做总结
如有个别回答错误,评论指出,我必更改,谢谢!😝