下面来说一下实现生成数独和解数独的大致设计。

首先,整个项目大概包括两部分,生成数独和解数独,这两部分基本是相互独立的。

生成数独的部分比较简单,只需要一个函数即可。解数独的部分我会写一个DLX类,来实现DLX精确覆盖的功能,还需要一个函数读取待解数独,构造DLX求解并输出。

由于解数独部分设计大量计算和I/O,之后可能会加入多线程,如果效果不好的话再通过Github版本回退。

还有就是解析命令行指令的部分,因为MSVC没有getopt,但是getopt是个开源函数,我可以在Github上找一份开源代码贴到项目中。

对于生成数独的单元测试,我准备先用小用例(大概1000组)来验证生成终局的正确性以及是否冲突,然后再用大用例(1e6组)来测试单元性能。

解数独部分的单元测试类似,加入多线程分开处理计算和I/O之后再测试性能来决定是否有必要保留多线程。

中间会根据测试结果改进代码,我估计这部分会耗费比编写代码更长的时间。

转载于:https://www.cnblogs.com/BIT1120161931/p/8622237.html

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐