第16期到了!
出题人偷偷地告诉各位,这个题之所以放在这里,是因为它没有看上去那么难哦……
召唤阵:
@yhz012 @inuisanaa @ZERC @随性而为 @NianRuoshui @摸鱼奇才咖啡喵
第16期 数独终局
各位应该都了解数独。数独的目标是从指定的状态出发,设法解出一个合理的数独终局——即数独棋盘的九行、九列和九个九宫格中,1-9这九个数字都恰出现一次。今天的任务并非给数独求解,而是从空的数独棋盘开始,“从无到有”地生成出数独终局。
并且,我们要生成出许多数独终局,左上角的数字还要求一样。
输入
只有一组测试用例。一行两个整数a和n,分别表示数独终局左上角的数字,和要求给出的数独终局数量。保证1<=a<=9, 1<=n<=2,000,000。
输出
输出所有的数独终局,两个数独终局间空一行。数独终局的形式如下:
123456789
234567891
345678912
456789123
567891234
678912345
789123456
891234567
912345678
不要输出到标准输出流中。请输出到文件result.txt。
时间限制
用C或C++编制的程序,时间限制分为三级:
easy:无时间限制
normal:120秒
hard:30秒
extreme:20秒(仅Windows)
想要挑战extreme难度?试试Windows的文件映射相关API,或者换用固态硬盘没错,氪金使人变强
------
虽然有四个模式,但是本题有意思的点都在easy模式和normal模式之间,剩下两个难度都是解决“如何科学地和硬盘打交道”这样的无聊的编程小问题。因此,只考虑算法的话,挑战normal模式就可以了。
各位加油!