传送门


一道裸的错排问题

错排问题

百度百科上这样

就是对于一个排列,每一个数都不在正确的位置上的方案数。n 个元素的错排数记为 D(n)。

公式

D(n)=(n−1)∗(D(n−2)+D(n−1))

推出公式(感性)

对于第n个数,放在k位置上。

而第k个数有两种情况:

  • 当第k个数放到n位置时,相当于把k和n交换了位置,对剩下的n-2个数没有任何影响,所以方案数为D(n-2)。
  • 当第k个数不放到n位置时,相当于k由原来的不能放在k位置变成了不能放在n位置,对k和剩下的n-2个数即这n-1个数都没有影响,所以方案数为D(n-1)。

所以对于每个k,都有D(n-1)+D(n-2)种排法。而k有n-1种选择,所以要乘上n-1,最终得出公式D(n)=(n-1)*(D(n-1)+D(n-2))。

其中,D(1)初始化为0,D(2)初始化为1。

AC代码

 #include<iostream>
using namespace std;
long long ans[];
int main()
{
int n;
cin>>n;
ans[]=;
ans[]=;
for(int i=;i<=n;i++) ans[i]=(i-)*(ans[i-]+ans[i-]);
cout<<ans[n];
return ;
}

最新文章

  1. GIT服务器的四种协议
  2. JSP登录页面使用Enter键登录【转】
  3. 字符串匹配(hash算法)
  4. WCF 笔记 (2) - 传输泛型 List 对象
  5. 五、mysql存储引擎
  6. 多个UITableView横向切换的简单实现(有点类似网易新闻)
  7. 【原创】FPGA开发手记(三) PS/2键盘
  8. 使用POI操作Excel使用小总结
  9. 有限等距性质RIP
  10. vue基础学习(二)
  11. 【转载】SSD 下的 MySQL IO 优化
  12. docker 操作镜像的基本操作
  13. HDU4609:3-idiots(FFT)
  14. bzoj2442
  15. [Training Video - 3] [Groovy in Detail] Non-static and Static variables, objects and object referances
  16. Linux下Bash shell学习笔记
  17. sqlplus客户端出现乱码
  18. Fedora 16下安装ruby on rails
  19. mysql应用学习-在cmd命令窗口下创建数据库和表
  20. 操作Excel的宏

热门文章

  1. 构建游戏开发的大数据项目的流程demo图
  2. bzoj2802 [Poi2012]Warehouse Store 贪心+堆
  3. ppt打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿
  4. display:line-block
  5. git初步研究2
  6. C/C++输出格式控制符
  7. C#删除文件夹的文件
  8. 10个你不得不知的WEB移动端开发的兼容问题
  9. POJ 1011 Sticks(搜索 &amp;&amp; 剪枝 &amp;&amp; 经典)
  10. apicloud直接上传图片