import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
public class ArrayDemo07 {
public static void main(String[] args) {
int[][] a1 = new int[11][11];
a1[1][2]=1;
a1[2][3]=2;
int sum=0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (a1[i][j]!=0){
sum++;
}
}
}
for (int[] ints : a1) {
for (int anInt : ints) {
System.out.print(anInt+" ");
}
System.out.println();
}
System.out.println("============================");
int[][] a2=new int[sum+1][3];//压缩数组
a2[0][0]=11;
a2[0][1]=11;
a2[0][2]=sum;//书写压缩数组的头部
int count=0;//统计稀疏数组个数
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (a1[i][j]!=0){
count++;
a2[count][0]=i;
a2[count][1]=j;
a2[count][2]=a1[i][j];
}
}
}
for (int i= 0; i< a2.length; i++) {
System.out.println(a2[i][0]+"\t"+
a2[i][1]+"\t"+a2[i][2]+"\t");
}
System.out.println("================");
int[][] a3 = new int[a2[0][0]][a2[0][1]];//稀疏数组还原
for (int i = 1; i < a2.length; i++) {
a3[a2[i][0]][a2[i][1]]=a2[i][2];//数组下标可以作为下标使用
}
for (int[] ints : a3) {//二维数组打印输出
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}
}
}
稀疏数字的压缩与还原
最新推荐文章于 2024-08-20 14:34:44 发布