public class Demo01 {
public static void main(String[] args) {
// 創建一個二維數組11*11
// 0:表示空白 1:表示黑子 2:表示白子
int array[][] = new int[11][11];
array[1][2] = 1;
array[2][3] = 2;
array[5][2] = 2;
// 輸出原始數組
for (int[] row:array){
for(int data:row){
System.out.printf("%d\t",data);
}
System.out.println();
}
// 將二維數組轉爲稀疏數組
// 先遍歷得到非零數據個數
int sum = 0;
for (int[] row:array){
for(int data:row){
if (data!=0){
sum++;
}
}
}
// 創建對應的稀疏數組
int arr[][] = new int[sum+1][3];
// 給稀疏數組賦值
arr[0][0] = 11;
arr[0][1] = 11;
arr[0][2] = sum;
// 給其他值賦給稀疏數組
int flag = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (array[i][j]!=0){
++flag;
arr[flag][0] = i;
arr[flag][1] = j;
arr[flag][2] = array[i][j];
}
}
}
System.out.println("------------------------------------------------------------------------");
// 輸出稀疏數組
for (int[] row:arr){
for(int xishu:row){
System.out.printf("%d\t",xishu);
}
System.out.println();
}
System.out.println("------------------------------------------------------------------------");
int newArray[][] = new int[arr[0][0]][arr[0][1]];
for (int k = 1; k <arr.length; k++) {
newArray[arr[k][0]][arr[k][1]] = arr[k][2];
}
// 輸出從稀疏數組轉出來的新二維數組
for (int[] row:newArray){
for(int data:row){
System.out.printf("%d\t",data);
}
System.out.println();
}
}
}