HDU 1465 不容易系列之一

来源:互联网 发布:南京证券开户软件 编辑:程序博客网 时间:2024/06/06 00:09

题目链接

题目意思

给你n个信封和n封信,要求将全部的信全部装错信封,问最多有多少种装法

解题思路

这是一个典型的错排问题,它用到一个结论F(n)=(n-1)*(F(n-1)+F(n-2))。

代码部分

#include <iostream>#include <cstdio>using namespace std;long long f[25];void PX(){    f[1]=0,f[2]=1;    for(int i=3; i<=20; i++)    {        f[i]=(i-1)*(f[i-1]+f[i-2]);    }}int main(){    int n;    PX();    while(cin>>n)    {        cout<<f[n]<<endl;    }    return 0;}
原创粉丝点击