package Array;
/**
* 稀疏矩阵
* 前提:二维数组的很多值都是0或者为同一个值时
*
* @author GoodTime0313
* @version 1.0
* @date 2021/1/19 20:27
*/
public class Sparsearray_1 {
public static void main(String[] args) {
//0:表示没有棋子,1表示黑子 2表示蓝子
int[][] ints = new int[11][11];
ints[1][2] = 1;
ints[2][3] = 2;
ints[4][5] = 2;
/*
1.二维数组转稀疏矩阵
处理方法:创建n行3列的稀疏矩阵a[n][3],n为有效值+1
a[0][0]存储多少行 a[0][1]存储多少列 a[0][2]存储多少个有效值
a[n][0]第几行 a[n][1]第几列 a[n][2] 有效值
.......
*/
int count = 0;
for (int[] anInt : ints) {
for (int j = 0; j < ints[0].length; j++) {
if (anInt[j] != 0) {
count++;
}
}
}
int[][] ints1 = new int[count + 1][3];
ints1[0][0] = ints.length;
ints1[0][1] = ints[0].length;
ints1[0][2] = count;
int k = 1;
for (int i = 0; i < ints.length; i++) {
for (int j = 0; j < ints[0].length; j++) {
if (ints[i][j] != 0) {
ints1[k][0] = i;
ints1[k][1] = j;
ints1[k][2] = ints[i][j];
k++;
}
}
}
System.out.println("二维数组转稀疏矩阵:");
for (int[] item : ints1) {
for (int j = 0; j < ints1[0].length; j++) {
System.out.print(item[j] + " ");
}
System.out.println();
}
/*2.稀疏矩阵转二维数组
处理过程:先读取稀疏矩阵第一行 获取行数列数建立二维数组
再读取稀疏矩阵剩下的行列,对二维数组进行赋值
*/
System.out.println("稀疏矩阵转二维数组:");
int[][] ints2 = new int[ints1[0][0]][ints1[0][1]];
for (int i = 1; i < ints1.length; i++) {
ints2[ints1[i][0]][ints1[i][1]] = ints1[i][2];
}
for (int[] value : ints2) {
for (int j = 0; j < ints2[0].length; j++) {
System.out.print(value[j] + " ");
}
System.out.println();
}
}
}
Click here to view the copyright notice of this site(点击此处查看本站版权声明)
必须 注册 为本站用户, 登录 后才可以发表评论!