藍橋杯第五屆JavaC組楊輝三角問題解決方法

Hrain發表於2019-01-20

此題是藍橋杯第五屆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:在時間允許的範圍內,先自己動腦子想,如果實在不會,再查閱資料,做總結

 

如有個別回答錯誤,評論指出,我必更改,謝謝!?

相關文章