错排,n个数相互不对应的排法
来源:互联网 发布:java oopmap 编辑:程序博客网 时间:2024/04/30 04:33
今天接触到一个词,错排,就是n个人每个人有一个物品,保证每个人都分配到不是自己的东西,就是错排,
其实很简单,假设前当讨论到第i个时,假设前i-1个全部排错,而dii个人分配到它的物品,那么这个人无论与谁交换,都可以保证这i个人的物品都不是自己的,还有一种情况,就是前i个人有一个人拥有的是自己的物品,这时,dii个人与他交换物品,也可以保证这i个人的物品都不是自己的,
所以d[i] = (i-1)*dp[i-1]+dp[i-2];
d[i-2]可以理解为有一个人是对的,但剩下的i-2个人是错误的;
下面拓展一下i个人有j个人是正确的;
i个人有j个时正确的,有三种情况,
1:前i-1个人有j-1个正确,然后分配给第i个人他自己的物品。
2:前i-1个人有j个正确,分配给第i个人他自己的物品,然后再把第i个人和前i-1个人拥有不正确物品的人交换
3:前i-1个人,有j+1个人正确,分配给dii个人他自己的物品,然后和前i-1个人拥有正确物品的人交换
结果就是:
d[i][j] = d[i-1][j-1]+= (i-1)*(d[i-1][j] - d[i-2][j-1])+ (j+1)*d[i-1][j+1];
0 0
- 错排,n个数相互不对应的排法
- n个数所有全排算法,通用
- 无重复N个数,抽取M个数全排
- N个数中前K个小的树(快排的改进)
- n个数里面找出最大的m个数字(快排思想)
- 排15个数
- 排15个数
- RPG的错排
- RGP的错排
- hdu2068RPG的错排
- RPG的错排
- RPG的错排
- HDURPG的错排
- 排错的经历
- hdu2068RGP的错排
- 排
- 制作水晶头,网线的排线顺序应怎样排
- m位二进制数,1个数不超过n,字典序排下第i个数
- 验证花括号是否成对出现
- JavaScript的json和Array及Array数组的使用方法
- 对Class类的几点探索
- Oracle数据库常用的数据类型
- MSRA初始化
- 错排,n个数相互不对应的排法
- mysql在线分表分库方案
- Zookeeper的集群配置和Java测试程序
- D3.js给饼状图添加提示框
- Beautiful Soup 4.2.0 文档
- Linux目录详解-etc目录
- 静态代码块、构造代码块、构造方法的执行顺序
- Leetcode#315 Count of Smaller Numbers After Self
- javascript入门基础篇重点 第二节2.