c语言电脑随机出题怎么弄,数独快速随机出题的算法

博客内容涉及使用C语言编写的一个程序,该程序在2009年i3处理器上能在4.139秒内生成100道数独题目。程序通过初始化、随机填充、解的计数等步骤生成不同难度的题目,其中高难度题目在执行第六步后得出。文章还分享了几道超高难度的数独题目。
摘要由CSDN通过智能技术生成



C语言写的程序,2009年 i3 的处理器,出100道题,4.139秒。

算法步骤:

1、初始化数据。

2、向盘面中随机填入n个数。(这里的随机当然不是完全随机,不然盘面是无解的,n是多少,也要凭经验,考虑后续算法的时间)

3、求解当前盘面的解的个数。

3.1、如果解的个数是1,则跳到6。

3.2、如果解的个数是0,转到1。

3.3、如果解的个数大于1,则求出两个解。

4、比较两个解中的数字差异,将相异的位置的数,任取一个,填入原始盘面中。

5、再次求解盘面中解的个数。

5.1、如果解的个数大于1,求出两个解,跳至4。

5.2、如果解的个数是1个,至6。

6、从当前盘面有数的位置,依次挖去一个。

6.1、再次求解盘面中解的个数。

6.1.1、如果是多个解,则把挖去的数补回,然后跳到6。

6.1.2、如果是1个解,则跳至6。

7、输出当前盘面。

为了减少题目的难度,第6步可省。

100道题,4.139秒是执行了第6步,相当部分题目难度值超过了2000。当然,不执行第6步,出的题目要简单得多,出题时间也快很多。

好吧,贴几个超高难度的题目:

000860000005000000300000750060000409700130006000200000000000031180300000000702000

000300000206070000050000402000000023000600800831000045000080006009067000700200300

900030006058040000000009502500900003013005000070000000000004070042600000000720100

060000000004020580050090702007000000600100000010080904003000050900300400500240600

000060010006003200250080400030002800800004007000900041008000730000000000907040005

500600000003010000001370080097000130230000094000400700008007240962000000000080000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值