第一章 稀疏数组
1.1 问题需求
- 实现五子棋程序中的存盘退出和续上盘的功能。
1.2 思路分析
- 使用二维数组来记录棋盘,其中黑子为1,白子为2,但是这样会产生一个问题,因为该二维数组的很多值是默认值0,记录这些默认值没什么意思?怎么办?
- 稀疏数组:当一个数组中大部分元素是0,或者是同一个值的数组时,可以使用稀疏数组来保存该数组。其处理方法如下所示:
- ①记录数组一共有几行几列,有多少个不同的值。
- ②把具有不同值的元素的行、列以及值记录在一个小规模的数组中,从而实现缩小数组的规模。
- 示例:
- 如果二维数组如下所示:
0 0 0 22 0 0 15 0 11 0 0 0 17 0 0 0 0 -6 0 0 0 0 0 0 0 0 39 0 91 0 0 0 0 0 0 0 0 28 0 0 0 0
- 那么其对应的稀疏数组就如下所示:
- 二维数组转稀疏数组的思路:
- ①遍历原始的二维数组,得到有效数据的个数sum。
- ②根据sum就可以创建稀疏数组 int[sum+1][3]。
- ③将二维数组的有效数据存入到稀疏数组中。
- 稀疏数组转二维数组的思路:
- ①先速去稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面的int[6][7]。
- ②在读取稀疏数组后几行的数据,并赋值给原始的二维数组即可。