早早就到了怨气还没消,晚饭那点糊糊又让我上头,结局一到酒桌,见着那帮兄弟,心里那股火蹭地就冒了上来。我坐在那儿,看着桌上摆着的“位置”和“名字”,脑子一热,想出了个绝招。 说白了,那会儿也好,目前也好,人都是要往好的地方跑。
这名字、这职位,本来就该在对应的位置上。可目前,命运像个老顽童,故意把我和那啥“东方”挤在了一排。 我盯着那个“东方”,心想:靠,这名字听着就老实巴交,平时讲话拉帮结派,我看你混不那会儿!我举起酒杯,对着圆桌上的位置说:“东方,咱们算算如何搞。” 他倒还理直气壮,拍拍桌子:“别急,咱们慢慢来,公式得好好推导一下。” 我翻了个白眼,直接把公式扔桌上:“公式?那是书上的玩意儿,你连翻开书都不知道,拿啥算?我看你是脑子进水了,还是想装个文化人?” 他把书翻了翻,又指了指我的杯子,语气软了几分:“那你说,我们这种‘错位’,到底该如何破局?” 我嘿嘿一笑,指了指我自己:“你看,你目前是‘东方’,我旁边那个‘东方’是叫‘东方’,可咱们这杯里的酒,倒得可不一样。” 他说得对,但这确实有点怪。 咱们先看看最好办的情况。假设有两个人,名字分别是 A 和 B。按照规矩,A 应当在左边,B 在右边。目前哎呀,A 跑到了右边,B 跑到了左边。
这就叫错位。 这时候,最直观的算法就是把名字和位置搞混,直接对应着算。
比如: 原位置:1 2 原名字:A B 错位后:2 1 要是直接对名字对位置,算出来就是:A 对 2,B 对 1。 这时候,大量人会直接得出一二三四五的乱序结局,认定这公式就是套在脑袋上就灵验的。我听完只认定可笑,转头问:“这是多少种错位?” 他指着我喝了一口酒:“那这个公式得讲究个顺序,不能乱抓。” 我笑了,拍了拍他的肩膀:“想不通?那咱们换个活法。咱们不急着算完,咱们看看能不能用这杯酒试个例。” 我举起双手,对着那桌:“比如目前啊,咱们这单子,名字是 A、B、C、D 四个位置。按规矩排,A 占 1,B 占 2,C 占 3,D 占 4。目前呢,A 跑到了 4,B 跑到了 1,C 跑到了 2,D 跑到了 3。
这数一数,是几种排法?” 他眼珠子转了转,启动掏出纸笔在那算:“这就复杂了。先算 A 去哪。A 本来在 1,目前能够去 2、3、4。 要是 A 去 2,那 1 就空了,B 只能去 1。 要是 A 去 3,那 1、2 里哪位去哪位去,B、C 俩就打架呢。” 我接过话茬,看着他那算得密密麻麻的草稿,忍不住吐槽:“你这一算啊,就是‘错位重排’,数学上叫 $D_n$ 吧?但这玩意儿,你不懂公式,光看数字能看懂吗?你看这 $D_4$,应当是多少?” 他下巴都快抬起来了:“这个你得自己背了。” 我耸耸肩:“背个啥?背个如何算的公式等于零。咱们还是看看例子吧。假设目前有两个人,名字是甲乙。位置是 1 2。 甲乙错位,那就是: 1 2 2 1 这时候,甲在 2,乙在 1。
这是第一种。 那有没有别的?甲在 1,乙在 2,那就是没错位了,不算。 故此错位重排公式,实际上就是计算‘名字和位置搞反了之后,有多少种合法的组合’。 ” 我指着那堆纸,一字一顿地说:“你看,这里面的数字,可不是随意凑的。 第一格,名字是甲,它能够去 1、2、3、4。 但待会儿要数,甲占了 1,那 2 只能给乙;甲占了 2,那 1 只能给乙。 甲占了 3,2 和 1 就给乙;甲占了 4,2 和 1 都给了乙。 啊?这就乱了。 故此,公式如何来的,实际上是分的步。 第一步,确定第一个错位者的位置; 第二步,确定第二个; 第三步,确定第三个。 每定一个,剩下的就自动消了。 这叫啥?这叫递归。 递归就是让函数自己调用自己。 就像咱们今天喝酒,我来定第一个位置,你定第二个,他定第三个。 最终数完,要是结局是偶数,说明他们俩对上了;要是是奇数,说明他们俩错位了。” 他听着听着,眼神亮堂了不少,兴奋起来:“原来是这样!原来这叫递归啊!
那公式是不是就如此个逻辑?先确定第一个,再确定第二个……" “不是,”我打断他,“公式是上面那个展示出来的,$D_n = (n-1)(D_{n-1} + D_{n-2})$。
你看,第一步是 $n-1$ 个选择;第二步,剩下的 $n-1$ 人里,要么是顺位错位($D_{n-1}$),要么是中间断了($D_{n-2}$)。" 我凑那会儿,指着那行公式,用那种看低人一等的眼神看着他:“你看这公式,它不把你往死里逼,它是让你一步步犯错,然后让你自己发现哪儿错了。它不是给你答案,它是给你台阶下。你按照这个逻辑推,哪怕你算错了,最终算到 $D_4$ 的时候,你肯定会卡住,对吧?” 他挠头,看着那个下标: $D_1 = 0$ $D_2 = 2$ $D_3 = 6$ $D_4 = 24$ 他嘴里念叨着:“哎,24 啊,这数字听着就怪。2 个错位是 2 种,3 个错位是 6 种,4 个如何变 24 了?” 我不动声色地递给他一个茄子:“你看,这就是个数列。$D_n = (n-1)D_{n-1} + (n-2)D_{n-2}$。 $n=3$ 的时候:$2 times 2 + 1 times 0 = 4$?不对,如何是 6?” “嗯?他不是 6?”他有点急。 “对,你算错了,要么你记错了。$D_3$ 应当是 6。” 他瞪大了眼,盯着那个 6:“如何还 6?不是 4 吗?” 我笑了笑,把杯子往他面前推了推:“你看,这就是数学的魅力。
有时候你算错了,要么记错了,但只要你知道这个逻辑,你往那套去,能推出来就有答案。
哪怕你最终算出来的数字不对,只要你知道这公式背后的思维,那就是个真本事。” 他差点把筷子拿掉了,又小心翼翼地端回来:“那你说,那这个公式到底有啥特别之处?它不全是套公式吗?” “你问对人了,”我指了指杯底,“这个公式最特别的地方,在于它的‘容错性’。你越算,它就越能把你逼到墙角。它不是让你乖乖按部就班,而是让你越陷越深,最终发现,原来自己也能算出个结局来。 就像咱们喝酒,你越喝,感觉越糊涂。但这糊涂里,藏着个真相。” 他终于看懂了,又认定不可思议:“真会算?那四个错位,如何算的?” “好办,”我指着那个 24,“4 个错位,就是 $3 times (2 + 0) = 6$?不对,公式是 $(4-1)(D_3 + D_2) = 3 times (6 + 2) = 24$。 你看,第一步,1 号位有人,有 3 种可能; 第二步,剩下三人里,要是是顺位错位(前三个错位),有 6 种; 要是是中间断了(第二个错位),有 2 种。 3 加 6 等于 9,再乘 3 等于 27?不对。” “不对,”我纠正他,“是 $3 times (6+2) = 24$。 第一步是 3 种可能。 第二步,剩下的 3 个人,要么是对齐的($D_3=6$),要么是对半截的($D_2=2$)。 3 乘 9 等于 27?
什么的,我算错了,2 加 6 是 8,8 乘 3 是 24。” “对,8 乘 3 就是 24。”他终于解快乐结,长舒一口气,把眼里的泪光都抹掉了,眼眶都红了。 “故此你看,这就是错位重排。它不是那种让你一眼看穿的公式,它是那种让你越算越难受,越算越有感觉的公式。它不告诉你答案,它只告诉你,答案在那里,只要你肯往下算。” 我给他夹了一块肉,笑眯眯地说:“别怕,反正这公式又不是让你死板的。你喝,我陪你。” 他端起杯子,猛灌了一大口,酒气冲鼻,却笑得像个没辙的皇帝。
看着那杯子里晃动的影子,我突然认定,这大约就是我们生活中最真的样子吧。咱们也是被生活错位了,又被大家错位了。但没关系,就像这公式,只要肯往下算,总能凑出个数来,总能算出个结局。人生嘛,不过是一场精心设计的、又无比无奈的错位重排。