宇宙的尽头是数学。你要相信,只要是涉及到高端技术的学科,那么数学永远是无法逃避的痛苦。
今天遇到了一个题,我花了一个小时才理清楚思路。看似就像一个高中的数学题,但其实一点都不简单。
问题是:有n封信和n个信封,每一封信都有自己的专属信封,问每一封信都放错信封一共有多少种可能。
刚开始我还傻傻地例举了所有可能:假设信的数量为n,可能性为m。当n=1时,m=0;当n=2时,m=1;n=3时,m=2;n=4时,m=9……数字之间好像没有规律。n=5的情况比较复杂,但我还是写了答案m=44。很明显,这是一个递推关系的数学题,m和n之间应该存在某个关系式,或是存在前n项和n+1项之间的关系式。
之后去看了一下思路,让我恍然大悟。假设前n-1个信封中的信都放错了,只有第n个信封中的信封是正确的,那么只要把第n个信封中发信和前n-1个信封中的任意一个信封中的信交换,那么就能满足了所有信都放错了条件,一共有(n-1)×f(n-1)种可能,其中f(n-1)为假设第n-1封信放正确,前n-2封信都放错的结果。除此之外,还有另一种可能,那就是第n封信放正确,前n-1封信中恰好有一封信放正确的情况,此时只需要交换第n封信和那一封正确的信就能满足全部信都放错的条件,结果为(n-1)×f(n-2),其中f(n-2)为前n-2项中恰好有一封信放正确的情况。所以,f(n)=(n-1)×f(n-1)+(n-1)×f(n-2)=(n-1)×[f(n-1)+f(n-2)],其中,f(1)=0,f(2)=1,n为大于零的正整数。
之后去查了这种情况,原来这种题型叫做错位排列,错位排列的公式就是:f(n)=(n-1)×[f(n-1)+f(n-2)]。但我觉得重要不是结果,而是能够提出假设情况并计算结果,这一种思维的重要性要远远大于结果的重要性。关于前n项的计算原本就是一个很抽象的数学思维,也涉及到了递归的思想,所以很困难。
我爱数学(迫真,欲哭无泪)(图片源自网络)
网友评论