将五子棋盘保存为数组,1代表白棋,2代表黑棋,0代表无棋子 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
转换为稀疏数组
11 11 2
1 3 1
2 4 2
其中稀疏数组[0][0]代表行大小,[0][1]代表列大小,[0][2]代表棋子数量;
稀疏数组[i][0]代表棋子所在行,[i][1]代表棋子所在列,[i][2]代表棋子颜色,i不等于0
具体测试代码如下:
public class SparseArray {
/***
* 概述:将五子棋盘保存为数组,1代表白棋,2代表黑棋,0代表无棋子
0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 2 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
*/
public static void main(String[] args) {
//创建棋盘数组
int[][] arr = new int[11][11];
//初始化棋子
arr[1][3] = 1;
arr[2][4] = 2;
for (int[] ints : arr) {
for (int anInt : ints) {
System.out.print(anInt+" ");
}
System.out.println();
}
System.out.println("将棋盘数组转换为稀疏数组:");
int[][] sparseArray = arrayToSparseArray(arr);
for (int[] ints : sparseArray) {
for (int anInt : ints) {
System.out.print(anInt+" ");
}
System.out.println();
}
System.out.println("将稀疏数组转换为:棋盘数组");
int[][] arrs = sparseArrayToArray(sparseArray);
for (int[] ints : arrs) {
for (int anInt : ints) {
System.out.print(anInt+" ");
}
System.out.println();
}
}
/**
* 概述:将二维数组转换为稀疏数组
* @param arr 二维数组
* 返回:int[][] 稀疏数组
* 作者:zhujie
* 创建时间:2021/7/10 11:27
*/
public static int[][] arrayToSparseArray(int[][] arr){
//获取二维数组大小
int x = arr.length;
int y = arr[0].length;
//记录有效值个数
int count = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (arr[i][j] != 0){
count++;
}
}
}
//创建稀疏数组
int[][] sparseArray = new int[count + 1][3];
//设置0位元素;[0][1]:原二维数组行;[0][1]:原二维数组行;[0][2]:原二维数组列;[0][3]:有效值个数;
sparseArray[0][0] = x;
sparseArray[0][1] = y;
sparseArray[0][2] = count;
//存储有效值数据
int index = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (arr[i][j] != 0){
index ++;
sparseArray[index][0] = i;
sparseArray[index][1] = j;
sparseArray[index][2] = arr[i][j];
}
}
}
return sparseArray;
}
/**
* 概述:将稀疏数组转换为二维数组
* @param arr 稀疏数组
* 返回:int[][] 二维数组
* 作者:zhujie
* 创建时间:2021/7/10 11:27
*/
public static int[][] sparseArrayToArray(int[][] arr){
//从稀疏数组获取原数组大小
int x = arr[0][0];
int y = arr[0][1];
//创建数组
int [][] result = new int[x][y];
//遍历稀疏数组,设置原数组值
for (int i = 1; i < arr.length; i++) {
result[arr[i][0]][arr[i][1]] = arr[i][2];
}
return result;
}
}