C++数独求解程序(阿里巴巴社招笔试题)对比:包括新加坡总理李显龙的程序
下面对几个网上的博客进行了对比,有的速度非常快,有的解不出来测试数独。
被测试数独:
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
测试对比:
名称 |
网址 |
用时(秒) |
特点 |
|
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
|
×××解不出来 |
算法本身有问题,直接就开始填数字。 自己自带的数独可以完成,其他再输入的就解不出来了,或者超时了。 |
|
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.
下一篇: (面试题 08.11)硬币