![]()
![]()
//创建一个二维数组,将棋子的坐标放到二维数组里,遍历出来
//确定有效数组元素的个数
//将有效数组元素个数放到稀疏数组里
//遍历稀疏数组
//还原稀疏数组
int[][] array1=new int[11][11]; //创建数组(棋盘)
array1[1][2]=1; //黑棋为1
array1[2][3]=2; //白棋为2
for (int[] arr : array1) { //遍历数组(棋盘)
for (int ar : arr) {
System.out.print(ar+"\t");
}
System.out.println();
}
int sum=0; //计算出有效地坐标个数
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
if (array1[i][j]!=0){
sum++;
}
}
}
System.out.println("数组中存在的有效元素是:"+sum+"个");
int[][] array2=new int[sum+1][3]; //创建稀疏数组(有几个有效元素就要有几行,列数是固定的,列数的表头为:行列值)
array2[0][0]=11;
array2[0][1]=11;
array2[0][2]=sum;
int count=0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
if (array1[i][j]!=0){
count++; //count的意思是:将有效地数组元素的行信息依次放到行表头里
array2[count][0]=i; //将行(下标)信息放到数组的行信息位置里
array2[count][1]=j; //将列(下标)信息放到数组的列信息位置里
array2[count][2]=array1[i][j]; //将元素放到稀疏数组的值信息表头里
}
}
}
for (int[] arr2 : array2) { //遍历稀疏数组
for (int ar2 : arr2) {
System.out.print(ar2+"\t");
}
System.out.println();
}
//将稀疏数组还原为原始数组
int[][] array3=new int[array2[0][0]][array2[0][1]]; //创建第三个数组为还原数组(array2[0][0]为11,array2[0][1]为11,也就是11行11列)
for (int i = 1; i < array2.length; i++) {
for (int j = 0; j < array2.length; j++) {
array3[array2[i][0]][array2[i][1]]=array2[i][2]; //将稀疏数组里的值放到还原数组里----array2[i][0]为[1][0],或者array2[1][1]--或者array2[2][0],array[2][1]
}
}
for (int[] arr3 : array3) {
for (int ar3 : arr3) {
System.out.print(ar3+"\t");
}
System.out.