6.6 多維數組使用示例
多維數組在實際使用時,更多的在於數組的設計,在實際使用中,一般對於多維數組的統計相對來說比一維數組要少一些,更多的設計數組的大小,並規定數組中存儲值的含義,在代碼中按照值的規定使用數組。
所以在實際使用多維數組以前,需要考慮清楚:
l需要幾維數組
l每一維的長度是多少
l按照怎樣的規則存儲值
l數組值的意義是什麼
6.6.1 拉丁方陣
要求:實現任意階拉丁矩陣的存儲和輸出
拉丁矩陣是一種規則的數值序列,例如4階的拉丁矩陣如下所示:
1 234
2 341
3 412
4 123
該矩陣中的數字很規則,在實際解決該問題時,只需要把數值的規律描述出來即可。
實現思路:聲明一個變量n,代表矩陣的階,聲明和初始化一個nXn的數組,根據數據的規律,則對應的數值為(行號 + 列號 + 1),當數值比n大時,取和n的余數。
實現的代碼如下:
int n = 6;
int[][] arr = new int[n][n];
int data;//數值
//循環賦值
for(int row = 0;row < arr.length;row++){
for(int col = 0;col < arr[row].length;col++){
data = row + col + 1;
if(data <= n){
arr[row][col] = data;
}else{
arr[row][col] = data % n;
}
}
}
//輸出數組的值
for(int row = 0;row < arr.length;row++){
for(int col = 0;col < arr[row].length;col++){
System.out.print(arr[row][col]);
System.out.print(' ');
}
System.out.println();
}
該代碼中變量data存儲行號+列號+1的值,每次在賦值時判別data的值是否小於等於n,根據判斷的結果賦值對應數組元素的值。
在解決實際問題時,觀察數字規律,並且把該規律使用程序進行表達,也是每個程序員需要的基本技能。
6.6.2 楊輝三角
要求:實現10行楊輝三角元素的存儲以及輸出。
楊輝三角是數學上的一個數字序列,該數字序列如下:
1
1 1
1 21
1 331
1 4641
該數字序列的規律為,數組中第一列的數字值都是1,後續每個元素的值等於該行上一行對應元素和上一行對應前一個元素的值之和。例如第五行第二列的數字4的值,等於上一行對應元素3和3前面元素1的和。
實現思路:楊輝三角第幾行有幾個數字,使用行號控制循環次數,內部的數值第一行賦值為1,其它的數值依據規則計算。假設需要計算的數組元素下標為(row,col),則上一個元素的下標為(row – 1,col),前一個元素的下標是(row – 1,col – 1)。
實現代碼如下:
int[][] arr = new int[10][10];
//循環賦值
for(int row = 0;row < arr.length;row++){
for(int col = 0;col <= row;col++){
if(col == 0){ //第一列
arr[row][col] = 1;
}else{
arr[row][col] = arr[row - 1][col] + arr[row - 1][col - 1];
}
}
}
//輸出數組的值
for(int row = 0;row < arr.length;row++){
for(int col = 0;col <= row;col++){
System.out.print(arr[row][col]);
System.out.print(' ');
}
System.out.println();
}
該題目中數字之間的規律比較簡單,主要是理解數組的下標基本的處理,加深對於數組下標的認識,控制好數組元素的值。