一、题目
二、源代码
package sparseArray;
public class SparseArray {
public static void printBoard(int[][] chessBoard){
for(int[] row : chessBoard) {
for(int data : row) {
System.out.printf("%d\t",data);
}
System.out.println();
}
}
public static void main(String[] args) {
int[][] chessBoard = new int[8][8];
chessBoard[2][3] = 1;
chessBoard[3][4] = 2;
System.out.println("原始棋盘数据:");
printBoard(chessBoard);
int validPieces = 0;
for(int[] row : chessBoard) {
for(int data : row) {
if(data != 0) {
validPieces ++ ;
}
}
}
int height = chessBoard.length;
int width = chessBoard[0].length;
int[][] simplifiedChessBoard = new int [validPieces+1][3];
simplifiedChessBoard[0][0] = height;
simplifiedChessBoard[0][1] = width;
simplifiedChessBoard[0][2] = validPieces;
int count = 0;
for(int i = 0;i < height;i++) {
for(int j = 0;j < width;j++) {
if(chessBoard[i][j] != 0) {
count ++;
simplifiedChessBoard[count][0] = i;
simplifiedChessBoard[count][1] = j;
simplifiedChessBoard[count][2] = chessBoard[i][j];
}
}
}
System.out.println("\n得到的稀疏数组为:");
for(int i = 0;i < simplifiedChessBoard.length;i++) {
System.out.printf("%d\t%d\t%d\t", simplifiedChessBoard[i][0], simplifiedChessBoard[i][1], simplifiedChessBoard[i][2]);
System.out.println();
}
int[][] restoredChessBoard = new int[simplifiedChessBoard[0][0]][simplifiedChessBoard[0][1]];
for(int k = 1; k < simplifiedChessBoard.length;k++) {
restoredChessBoard[simplifiedChessBoard[k][0]][simplifiedChessBoard[k][1]] = simplifiedChessBoard[k][2];
}
System.out.println("\n根据稀疏数组打印出原始棋盘数据:");
printBoard(restoredChessBoard);
}
}
三、结果