封面冷、内容硬的家伙,我向来顺手往书架顶层塞。眼不见,心不烦。可《算法设计及应用》偏就孤零零躺在那儿。前阵子大扫除,抽出来翻两眼。好家伙,满屏伪代码,黑白流程图晃得人眼晕。心里咯噔一下:完了,这月又得啃硬骨头。硬着头皮往下翻。直到分治法那几章……手指头,居然停了。作者没拿学术黑话糊弄人。代码注释写得,跟邻家大哥唠嗑似的。一行行顺下来,愣是没打瞌睡。瞅着瞅着,人有点出戏。这哪是教计算机算题啊?分明拿生活里那些破事儿打比方。看着硬核,拆开看,全是人情世故。

分治法。说白了,就是大摊子事儿拆成小零件。修完,再装回去。书里讲枚举和递推。我脑子里直接蹦出上个月搬家。十二个平米的出租屋。快三十个纸箱。我站在中间发懵。连落脚地儿都找不着。后来干脆不想了。死盯住手边一个鞋柜。塞满。封胶带。扔墙角。再摸下一个。那股子焦躁,就这么一点点磨平了。书里管这叫“规模缩小到可处理阈值”。听着玄乎。我觉着,就是给自己打鸡血。别贪多。眼下这一亩三分地理顺了,再往前挪一步。当然,算法里这招,未必管所有事。生活里的烂摊子,有时候真拆不开。但真卡死了,试试这招。大概能少掉两根头发。算法底下藏的,真不是冷冰冰的算式。就是给自己留口喘气的底气。

后来真正卡壳的,是动态规划。书里原话:“记住过去的解,避免重复计算。”我念了好几遍。心里直乐。这不就是咱们踩坑的日常吗?哪儿是脑子不够使。分明是忘了把走过的弯路,存进缓存。前阵子赶那个用户权限模块。需求跟半年前做的那单,简直一个模子刻出来的。我脑子一热。还是拍脑袋,从零搭框架。熬到凌晨三点。眼皮直打架。随手翻了下旧代码库。好家伙。核心逻辑早就躺那儿了。我居然又老老实实敲了三百多遍。书里拿填表格打比方。“回头扫一眼老账本,接着往下干。”那种踏实感,一下就落到了纸上。道理听着轻巧。真上手,全凭死记硬背。咱们这号人,平时总爱拍脑袋信直觉。觉得建表存档太麻烦。谁愿意花那功夫,给经验建张表啊?可碰见真急眼的时候。那表,就是救命稻草。

算法也不是包治百病的灵丹妙药。讲贪婪算法那节。作者点破了一个毛病。只顾着捡眼前的甜头。容易把后面最大的那块,漏掉。我立马想起前年挑工作那会儿。光盯着大厂薪资和职级。挑了条看着最宽敞的路。进去才发现。团队里扯皮的扯皮。业务方向也跑得没边了。书里不跟你扯对错。就老老实实摆出回溯和图搜索的路子。意思很明白。走岔了,能往回退。重新探路。可生活里哪有现成的 backtrack() 函数供你调用?房租押一付三。离职还得扣半个月绩效。哪能说退就退?多半是摸着石头过河。走一步,算一步。顺便把那些退不回来的岔路,硬着头皮认了。要是真能回头,谁愿意在死胡同里耗着?现实往往没那么多重来的机会。这大概,也是算法和生活最大的区别。

搁下书的时候。外头天都黑透了。窗玻璃上全是雾。这书本儿不厚。连个跌宕的故事都没有。封面都翻得起毛边了。可它硬是把我看复杂事儿的视角,给掰正了。再碰上难啃的硬骨头。我不再满世界找什么速成捷径。先盘盘。最小的那截儿在哪儿?以前踩过的坑,忘没忘?万一选错了,敢不敢往回退半步?算法说到底,就是个趁手的家伙什。日子还得自己一寸寸往前走。不过下次再撞上一团乱麻。我估计会先烧壶水。泡杯茶。把手机扣桌上。坐稳当了。挑头一个能解的小结。慢慢捋。别急。慢慢来。反正天也不会立刻塌下来。