1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| public class SparesArray { public static void main(String[] args) { int[][] array1 = new int[11][11]; array1[1][2] = 1; array1[2][3] = 2;
System.out.println("输出原始的矩阵");
for (int[] ints : array1){ for (int anInt : ints){ System.out.print(anInt + "\t"); } System.out.println(); }
int sum = 0; for (int i = 0; i < 11; i++){ for (int j = 0; j < 11; j++) { if (array1[i][j] != 0) { sum++; } } } System.out.println("有效值个数:" + sum);
int[][] array2 = new int[sum+1][3]; array2[0][0] = 11; array2[0][1] = 11; array2[0][2] = sum;
int count = 0; for (int i = 0; i < array1.length; i++){ for (int j = 0; j < array1[i].length; j++) { if (array1[i][j] != 0){ count++; array2[count][0] = i; array2[count][1] = j; array2[count][2] = array1[i][j]; } } }
System.out.println("稀疏数组"); for (int i = 0; i < array2.length; i++){ System.out.println(array2[i][0] + "\t" + array2[i][1] + "\t" + array2[i][2]); }
System.out.println("还原");
int[][] array3 = new int[array2[0][0]][array2[0][1]];
for (int i = 1; i < array2.length; i++){ array3[array2[i][0]][array2[i][1]] = array2[i][2]; }
for (int[] ints : array3){ for (int anInt : ints){ System.out.print(anInt + "\t"); } System.out.println(); }
} }
|