package 作业;
public class 稀疏数组 {
public static void main(String[] args) {
//1.创建一个11*11的二维数组棋盘,0为空七,1为黑棋,2为白棋。
int[][] array = new int[11][11];
//2.在棋盘上创建两个棋子
array[1][2] = 1;
array[2][3] = 2;
array[3][4] = 1;
//3.打印棋盘
for (int[] ints : array) {
for (int anInt : ints) {
System.out.print("\t"+anInt);
}
System.out.println();
}
//4.打印有效数字
int sum = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
if (array[i][j] != 0){
sum++;
}
}
}
System.out.println("\tsum的值为:"+sum);
//5.创建一个稀疏数组
int[][] spars_array = new int[sum+1][3];
spars_array[0][0] = 11;
spars_array[0][1] = 11;
spars_array[0][2] = sum;
//6.将有效值转递给稀疏数组
int count = 0;
for (int i = 1; i < array.length; i++) {
for (int j = 1; j < array.length; j++) {
if (array[i][j] != 0){
count++;
spars_array[count][0] = i; //将横坐标传递给稀疏数组下标值
spars_array[count][1] = j; //将纵坐标传递给稀疏数组下标值
spars_array[count][2] = array[i][j];//将array有效数值传递给稀疏数组下标值
}
}
}
//7,循环打印稀疏数组
for (int i = 0; i < spars_array.length; i++) {
System.out.println("\t"+spars_array[i][0]+"\t"
+spars_array[i][1]+"\t"+spars_array[i][2]+"\t");
}
System.out.println();
System.out.println("==============================");
//8.将稀疏数组值还原
int[][] array2 = new int[spars_array[0][0]][spars_array[0][1]];
for (int i = 1; i < spars_array.length; i++) {
array2[spars_array[i][0]][spars_array[i][1]] = spars_array[i][2];
}
//9.打印转换后的数组
for (int i = 0; i < array2.length; i++) {
for (int j = 0; j < array2.length; j++) {
System.out.print("\t"+array2[i][j]);
}
System.out.println();
}