第 一章 一道彈性碰撞的物理題,結果為什么會出現π? 1
1.1 碰撞的滑塊 1
1.2 隱藏的橢圓 3
1.3 把橢圓 “捏” 成圓 5
第二章 超級任務與一致收斂 8
2.1 Ross-Littlewood 悖論 8
2.2 逐點收斂與一致收收斂 9
第三章 怎樣在球面上 “均勻” 排列許多點? 13
3.1 神奇的斐波那契網格 13
3.2 從平面點陣入手 19
3.2.1 連分式與丟番圖逼近 20
3.2.2 模式與模式圖 22
3.2.3 連分式中的大項對模式的影響 30
3.2.4 斐波那契網格為什么混亂又密集? 32
3.2.5 總結 36
3.3 回到球面點陣 37
第四章 一道 “小黃鴨” 概率題及其有趣擴展 40
4.1 “小黃鴨” 原題 40
4.2 高維情況初探 44
4.3 高維情況再探 48
4.4 高維情況的解決 54
4.5 編程驗證 30
第五章 “賭徒” 的征程 66
5.1 引子 66
5.2 遞推法的困境 68
5.3 鞅的停時定理 75
5.4 會長大的籠子 80
5.5 靠譜的譜分析 83
5.6 尾聲 88
第六章 一種錯誤的洗牌算法,以及亂排常數 90
6.1 亂排常數的起源 90
6.2 亂排常數的推導 95
6.3 亂排常數的簡潔形式 101
6.4 亂排常數的幾個推廣 103
第七章 用位運算速解 n 皇后問題 108
7.1 解法一: 步步回眸 109
7.2 解法二: 雁過留痕 111
7.3 解法三: 以一當百 113
7.4 解法四: 彈無虛發(fā) 116
7.5 解法五: 精益求精 119
7.6 總結 120
第八章 如何不重復地枚舉 24 點算式? 122
8.1 樸素的枚舉法 122
8.1.1 算式的表示方式 123
8.1.2 樸素的枚舉算法 125
8.1.3 算式重復的統計 126
8.1.4 算式重復的原因 127
8.2 避免由交換律、結合律、獨立運算順序不造成的重復 129
8.2.1 避免由 “交換律” 造成的重復 129
8.2.2 避免由 “結合律” 造成的重復 130
8.2.3 避免由 “獨立運算順序不” 造成的重復133
8.2.4 小結 135
8.3 避免由去括號、反轉減號造成的重復 136
8.3.1 避免由 “去括號” 造成的重復 137
8.3.2 避免由 “反轉減號” 造成的重復 138
8.3.3 總結 143
第九章 Sprague-Grundy 定理是怎么想出來的? 145
9.1 游戲介紹 145
9.2 策梅洛定理 148
9.3 游戲狀態(tài)的組合 149
9.4 Sprague-Grundy 數的提出 151
9.5 狀態(tài)組合時 Sprague-Grundy 數的運算規(guī)則 154
9.5.1 規(guī)則的發(fā)現 154
9.5.2 規(guī)則的證明 156
9.6 Sprague-Grundy 定理的完整表述 157
第十章 小算法題,大應用:如何 “掰平” 一個不單調的序列? 159
10.1 如何 “掰平” 一個不單調的序列? 159
10.1.1 Matlab 的掰乎算法 160
10.1.2 高效的掰平算法 162
10.2 “掰平” 算法的應用: multi-dimensional scaling 163
10.3 附記 168
第十一章 二叉樹怎樣序列化才能重建? 169
11.1 幾種常見的序列化方法 169
11.1.1 僅使用一種遍歷的序列化方法 169
11.1.2 使用兩種遍歷的序列化方法 170
11.1.3 二叉搜索樹 (BST) 的序列化方法 173
11.2 二叉樹序列化能夠重建的充分條件 175
11.3 “不含重復元素” 的必要性探討 176
參考文獻 180