1.首先我们看图看一下稀疏数组的构造,思考我们如何把值存到数组中
这个数组存储的位置如上,我们要理解第一行是存放矩阵的行数,列数,矩阵中不为零的个数
第二行开始,我们开始存储每一个数的行数和列数和值,
之后我们将压缩后的数组,重新变成矩阵。
import java.util.Arrays;
public class Demo3 {
public static void main(String[] args) {
int[][] chess=new int[11][11];
//0代表为下的地方,1代表黑子,2代表红子
//System.out.println("请开始下棋,输入数字");
//Scanner scanner= new Scanner(System.in);
chess[0][1]=1;
chess[1][2]=2;
//遍历二维数组,增强for循环
for (int[] a:chess) {
for(int c:a){
System.out.print(c+" ");
}
System.out.println();
}
//遍历数组2,对数组中的值进行操作
int num=0;
for (int[] value : chess) {
for (int i : value) {
if (i != 0) {
num++;
}
}
}
System.out.println("有效值的个数"+num);
//创建一个二维稀疏矩阵
int[][] chess1 = new int[num+1][3];
chess1[0][0]=11;
chess1[0][1]=11;
chess1[0][2]=num;
//遍历二维数组,将非零的值,存放稀疏数组中
int count=0;
for(int i=0;i< chess.length;i++){
for (int j = 0; j <chess[i].length ; j++){
if(chess[i][j]!=0){
count++;
chess1[count][0] = i;
chess1[count][1] = j;
chess1[count][2] = chess[i][j];
}
}
}
System.out.println("################################");
System.out.println("输出稀疏矩阵");
for (int i = 0; i < chess1.length; i++) {
System.out.println(chess1[i][0]+"\t"+ chess1[i][1]+"\t"+chess1[i][2]+"\t");
}
//1.读取稀疏数组
int[][] chess2 = new int [chess1[0][0]][chess1[0][1]];
//给其中的元素还原它的值
//这里i=1因为稀疏矩阵中,第一行是整个的信息,具体的信息从第二行开始
for(int i = 1; i < chess1.length;i++){
chess2[chess1[i][0]][chess1[i][1]]=chess1[i][2];
}
//打印数组
for (int i = 0; i < chess2.length; i++) {
for (int j = 0; j < chess2[i].length ; j++) {
System.out.print(chess2[i][j]+" ");
}
System.out.println();
}
}
}
以上是关于棋盘的案例,如有不对,欢迎指出