HDU 1465 错排问题
2016-02-23 13:19
190 查看
错排问题简单的理解就是{123..n}的排列中每个数字都不在原来位置上的排列, 设Dn为n个元素错排的数量, 那么Dn = (n-1)*(Dn-1+Dn-2)。其中D1=0, D2=1。关于错排的另外一个数学表达式就是n!*(1-1/1!+2/2!+...+(-1)^n/n!)。。这一题就是求Dn直接递推即可。代码如下:
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; long long D[100]; int main() { D[0] = 1; D[1] = 0; for(int i=2; i<=30; i++) D[i] = (i-1)*(D[i-1]+D[i-2]); int n; while(cin>>n) { cout<<D <<endl; } return 0; }
相关文章推荐
- makefile 中 $@ $^ %< ar rz使用
- 理解复数
- SQL Delta实用案例介绍
- salt服务端向客户端同步grains错误一枚
- Java的BIO、NIO和AIO介绍
- VLC编译错误
- JAVA基础(17) Java虚拟机工作原理详解
- Objective-c的@property 详解
- 移动端Web开发调试之Chrome远程调试(Remote Debugging)
- java基础—java中使用final关键字的总结
- test
- R语言中的回归诊断
- 安卓源码下编译
- 标准IO库《APUE》 Chapter-5
- iOS开发网络篇—网络编程基础
- iOS 制作view渐变的效果CAGradientLayer
- 36. Valid Sudoku
- POJ 2442 Sequence 堆的思想的应用 STL 堆学习
- POJ 3159 - Candies
- 如何配置Nginx+Fastcgi实现控制硬件