直接讲错排问题 解决了错排问题 代码很简单。
声明:假设共有n个男生 f(n)表示有n个男生选错的情况总数 同理可得 f(n-1)表示n-1男生选错的情况的总数
用逆向递推的思想 第一步.第n个男生可以选的位置有n个 其中错的位置有n-1个 假设他现在选择了错的里面的一个位置K
第二步.此时我们可以先让k来选择 因为他比较特殊(无论选哪都是错的位置) 虽然他选什么位置都是错的
当可以供他选择的位置中还是有特殊的位置 我们分为第n个男生的位置和非第n个男生的位置
1.如果他选了第n个男生原来的位置 那接下来就简单了 因为剩余的人的编号和剩余的位置的编号是一样的 故可以认为其实是错排n-2个男生 即f(n-2)
2.他不能选第n个男生原来的位置 我们举个例子:
剩余位置 1 2 3 4 5
剩余人 1 2 3 4 5 图1
假设1男孩坐到了3号位置 则现在变成了
剩余位置 1 2 4 5 图2
剩余人 2 3 4 5
此时3不能选择1 可以选择2 4 5 我们这时可以把3看做1了(因为他有着和1同样的特点 即只能选择非1的座位)
不信我们看这个 剩余位置 1 2 4 5 图3
剩余人 2 1 4 5
图3的1不能选择1 和图3不能选择1是一样的 其他的数字都可以选 所以我们这里认为 把图2中的 2 3 4 5错排给1 2 4 5和
把图3中的 2 1 4 5错排给1 2 4 5的情况的可能性数量是一样的 即f(n-1)种
第三步:结合第一步和第二步可得f(n)=(n-1)*(f(n-1)+f(n-2)) 这个式子贼靓!!