欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++数独求解程序(阿里巴巴社招笔试题)对比:包括新加坡总理李显龙的程序

程序员文章站 2022-06-04 16:57:25
...

下面对几个网上的博客进行了对比,有的速度非常快,有的解不出来测试数独。

被测试数独:

000002050
078000300
000004000
500000000
000000100
000030708
200000040
000005090
010070000

正确解:

 396 712 854
 478 659 312
 152 384 976

 581 267 439
 723 948 165
 649 531 728

 267 893 541
 834 125 697
 915 476 283
测试对比:

名称

网址

用时(秒)

特点

C++实现的解数独(Sudoku)程序

 

http://www.cnblogs.com/yonggandefeng/p/6198222.html

 

0.001

算法可读性不高,速度很快

如何评价新加坡总理李显龙写的C++数独求解程序?

https://www.zhihu.com/question/30113360

 

0.001s:网上说法(可能用的数独简单)

0.035,我自己亲自测试

古老的计算机语言操作方式。我没验证

C++ 完美**九宫格(数独)游戏

 

http://blog.csdn.net/xzz_hust/article/details/9673777

 

×××解不出来

算法本身有问题,直接就开始填数字。

自己自带的数独可以完成,其他再输入的就解不出来了,或者超时了。

数独解法c++实现

 

http://www.cnblogs.com/dancer16/p/6916795.html

http://blog.csdn.net/qq_31558353/article/details/50615760

 

4.473秒

递归解法DNS

 

被测试数独数据(据说难度不小):

/* 创建数独矩阵 */

int num[9][9] = {

{ 0, 0, 0, 0, 0, 2, 0, 5, 0 },

{ 0, 7, 8, 0, 0, 0, 3, 0, 0 },

{ 0, 0, 0, 0, 0, 4, 0, 0, 0 },

{ 5, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 0, 0, 0, 0, 0, 1, 0, 0 },

{ 0, 0, 0, 0, 3, 0, 7, 0, 8 },

{ 2, 0, 0, 0, 0, 0, 0, 4, 0 },

{ 0, 0, 0, 0, 0, 5, 0, 9, 0 },

{ 0, 1, 0, 0, 7, 0, 0, 0, 0 },

};

000002050

078000300

000004000

500000000

000000100

000030708

200000040

000005090

010070000

 

总理李显龙输出:

 --- --2 -5-

 -78 --- 3--

 --- --4 ---

 

 5-- --- ---

 --- --- 1--

 --- -3- 7-8

 

 2-- --- -4-

 --- --5 -9-

 -1- -7- ---

 

 396 712 854

 478 659 312

 152 384 976

 

 581 267 439

 723 948 165

 649 531 728

 

 267 893 541

 834 125 697

 915 476 283

 

Level Counts:

 

(6, 8):   1 (4, 8):   1 (5, 8):   1 (2, 8):   1 (9, 8):   1 (3, 8):   1

(4, 7):   1 (4, 9):   1 (5, 9):   1 (3, 9):   1 (1, 9):   2 (2, 9):   3

(9, 9):   3 (3, 7):   3 (1, 7):   5 (3, 1):   5 (3, 5):   7 (7, 7):  12

(7, 9):  13 (8, 9):  11 (7, 5):  11 (9, 6):  17 (2, 6):  19 (6, 6):  17

(9, 7):  15 (8, 7):  17 (9, 4):  20 (9, 1):  20 (9, 3):  15 (4, 5):  10

(2, 5):  15 (2, 4):  14 (2, 1):  12 (1, 5):  12 (8, 5):  12 (5, 5):   6

(6, 1):   4 (1, 1):   2 (8, 1):   2 (5, 1):   2 (1, 4):   2 (3, 3):   2

(3, 2):   2 (5, 6):   2 (4, 4):   2 (5, 4):   2 (6, 4):   2 (4, 2):   2

(7, 6):   2 (8, 4):   2 (7, 2):   2 (1, 2):   1 (6, 2):   1 (6, 3):   1

(7, 3):   1 (7, 4):   1 (8, 2):   1 (1, 3):   1 (8, 3):   1 (5, 2):   1

(5, 3):   1 (4, 6):   1 (3, 4):   1 (4, 3):   1

 

Count = 352

 

 

Total Count = 2171

0.035 second elapsed.