表示数独谜题的正确数据结构?即与使用的其他数据结构相比,它应该使用更少的内存?

Proper data structure to represent a Sudoku puzzle? i.e it should use less memory compared to other data structure used?

提问人:user846445 提问时间:7/15/2011 最后编辑:Brian Tompsett - 汤莱恩user846445 更新时间:11/12/2015 访问量:386

问:

请提出qn的解决方案? 表示数独谜题的正确数据结构?即,与使用的其他数据结构相比,它应该使用更少的内存?

数据结构

评论

3赞 cnicutar 7/15/2011
我可能看错了,但是 NxN 矩阵有什么问题?

答:

0赞 Cade Roux 7/17/2011 #1

怎么样 或者byte[81]byte[9][9]

0赞 Mateen Ulhaq 7/17/2011 #2

最小内存量*:

byte puzzle[41];

GET_PUZZLE(x,y) = puzzle[(9*y+x)/2] >> ((9*y+x)%2 * 4) & 0x0F;

每个数字框以 4 位存储 - 因此每个字节有两个数字。

*仅测量数据结构;而不是被大量低效的 GET_PUZZLE() 占用的程序内存/etc。


易用性、可维护性、速度等:

byte puzzle[9][9];

GET_PUZZLE(x,y) = puzzle[x][y]

任何理智的人都会使用的东西。幸运的是,这也是最明显的。