Problem Description:给n个网友每人写了一封信,这都没什么,要命的是,他竟然把所有的信都装错了信封!注意了,是全部装错哟!
现在的问题是:请大家帮可怜的8006同学计算一下,一共有多少种可能的错误方式呢?
HIT:
A B C D E F...
1 2 3 4 5 6
首先给出你最后的结果,就是一个调用函数递推的过程:f(n)=(n-1)x(f(n-1)+f(n-2))
那么为什么呢?Follow me you will know the answer.
1.A会装在除1以外的信封(因为是全部装错),所以假设A装在了4(随意是几,1除外)中。
2.那么D可以装的信封是除4之外的,既是有n-1种选择。
3.假如1:D装在1(从n-1个里选择第一个)中,此时信封和信的对应关系为:
B C E F
2 3 5 6
则仅剩下的刚好剩下n-2个信封,n-2个一一相对的信,就又相当于是求f(n-2)(既是n-2个信全装错的可能)。
假如2:在A装在了4之后,此时信封和信的对应关系为:
B C D E F...
2 3 1 5 6
D只能装在除1之外的信封,此时的所有条件和f(n)一样(一样的地方是BCDEF分别不能装在23156中,相当于此时不仅BCEF和2356一一对应,D和1也对应),所以此时剩下f(n-1)封信,就是f(n-1)种可能的情况。
所以最后,就是一个调用函数递推的过程:f(n)=(n-1)x(f(n-1)+f(n-2))