全错位排列递推分析
来源:互联网 发布:淘宝试用如何领取 编辑:程序博客网 时间:2024/05/16 00:29
“装错信封问题”是由当时最有名的数学家约翰·伯努利(Johann Bernoulli,1667-1748)的儿子丹尼尔·伯努利(DanidBernoulli,1700-1782)提出来的,大意如下:
一个人写了n封不同的信及相应的n个不同的信封,他把这n封信都装错了信封,问都装错信封的装法有多少种?
分析:
假设有信封A,B,C,D...;信件1,2,3,4...;全部装错有f(n)种情况。
这里分两种情况考虑:①前面n-1个信封全部装错;②前面n-1个信封有一个没有装错其余全部装错。
①前面n-1个信封全部装错:
因为前面n-1个已经全部装错了,所以第n封只需要与前面任一一个位置交换即可,总共有f(n-1)*(n-1)种情况。
举例:假设有4个信封ABCD和4个信件1234;
那么前三个全部排错的情况为:312,213两种,加上4后变为3124,2134。4不能在自己位置,因此与前面位置交换即可,所以有4123,3421,3142,4312,2413,2341六种情况。
②前面n-1个信封有一个没有装错其余全部装错:
为什么考虑这种情况,因为n-1个信封中如果有一个没装错,那么我们把那个没装错的与n交换,即可得到一个全错位排列情况。
得到这种情况的种数也很简单,即是忽略掉那个没装错的情况去排列其他的信封的全错排种数f(n-2)*(n-1)。
举例:假设有4个信封ABCD和4个信件1234;
前三个为123,忽略1,剩下23,错排23就有32一种情况加上14即变为1324,再交换得到4321这种情况;
前三个为123,忽略2,剩下13,错排13就有31一种情况加上24即变为3214,再交换得到3412这种情况;
前三个为123,忽略3,剩下12,错排12就有21一种情况加上34即变为2134,再交换得到2143这种情况
共三种情况。
综上,f(n)=f(n-1)*(n-1)+f(n-2)*(n-1)=(n-1)*(f(n-1)+f(n-2));
- 全错位排列递推分析
- 错位排列递推公式推导
- hdoj2048(神、上帝以及老天爷)(全错位排列,递归,递推)
- 全错位排列
- 全错位排列
- 全错位排列
- 全错位排列
- 全错位排列问题
- 全错位排列
- 全错位排列
- 全错位排列
- hdu(2048)全错位排列
- 全错位排列 配对概率问题
- HDU2048全错位排列 关于抽奖
- HDU2049 全错位排列加上组合数
- 递归递推 H (全错排列)
- 错位排列
- 错位排列
- 记录一些链接,方便自己有空的时候慢慢查看
- 64位Win8安装Oracle12C临时位置权限错误解决方案
- 30行C代码实现贪吃蛇
- angularjs 关于Module 'ngLocale' is not available! is misleading
- LINQ 查询单个数据表
- 全错位排列递推分析
- Java—float数据在内存中的存储方法
- 查找页面控件
- Contingency and Management Reserve
- 更新字典(Updating a Dictionary)
- oracle的linesize名令
- linux下有关用户、组以及权限的学习
- Java并发学习笔记(七)-ArrayBlockingQueue
- Copy List with Random Pointer