第六部分 和 第七部分 我的视频讲座系列介绍了标准模板库现在可用;它们包括算法和函子。
以前的部分:
第1部分 (序列容器)
第2部分 (关联容器)
第三部分 (智能指针)
第五部分 (努里卡贝)
我的Nurikabe解算器,可用 在这里 ,演示了如何使用前面提到的STL组件。 我一直在优化它;有更多的工作要做,但我已经取得了戏剧性的加速:
拼图 |
时间(v1.1) |
时间(v1.7) |
加速 |
维基百科 |
87.1毫秒 |
5.9毫秒 |
14.8倍 |
维基百科 |
36.1毫秒 |
3.2毫秒 |
11.4倍 |
尼科利1 |
18.5毫秒 |
1.6毫秒 |
11.9倍 |
尼科利2 |
13.2毫秒 |
1.9毫秒 |
7.1倍 |
尼科利3 |
16.8毫秒 |
2.2毫秒 |
7.8倍 |
尼科利4 |
108.1毫秒 |
5.9毫秒 |
18.3倍 |
尼科利5 |
89.7毫秒 |
7.3毫秒 |
12.3倍 |
尼科利6 |
87.5毫秒 |
5.7毫秒 |
15.3倍 |
尼科利7 |
2123.97秒 |
496.0毫秒 |
4282.3倍 |
尼科利8 |
2784.7毫秒 |
316.7毫秒 |
8.8倍 |
尼科利9 |
13518.2秒 |
32.8秒 |
412.4倍 |
尼科利10 |
11811.8秒 |
8.5秒 |
1397.5倍 |
以下是更改日志:
1.0(8/24/2010)–第一版,出现在第9频道的STL视频介绍第4部分。
1.1(2010年9月1日)-增加了1个来自维基百科的谜题和10个来自Nikoli的谜题。改进了微秒/毫秒/秒的时间格式。现在记录初始施工和分析的每个步骤所用的时间。
1.2(2010年9月1日)–通过以确定性但伪随机顺序猜测单元格,大规模加速假设矛盾分析。
1.3(2010年9月8日)–将Grid::solve()重新组织为更小的成员函数。谢谢,更正2!
1.4(2010年9月24日)–通过对白细胞附近的猜测进行优先排序,进一步加速了假设性矛盾分析。谢谢,迈克尔B。!
1.5(2010年10月19日)–通过使Grid::constrated()使用vector
1.6(2010年10月20日)–删除了Grid::analyzeu insulatedu unknownu regions(),在顶级分析和假设矛盾分析中,它只成功了一次(在wikipediau hard上)。删除了Grid::operator=()的定义,并完全删除了Grid::swap(),因为它们未使用。避免在网格的私有复制ctor中复制mïu输出,因为在假设的矛盾分析期间不需要它。即使在将来,解算器被扩展以捕获输出