错排公式

题目:某人写了n封信和n个信封,如果所有的信都装错了信封。求所有的信都装错信封共有多少种不同情况。

分析:这里要用到错排公式,即(n-1)(F(n-1)+F(n-2))。有n-1封或n-2封放错,其中n-1封放错对应将第N封同n-1封交换;而n-2封对应将没放错的一封和第N封交换,N可以使n-1中的任意一封。

#include<cstdio>
#include<cstdlib>
using namespace std;
int let(int n)
{
    if(n==1)return 0;
    if(n==2)return 1;
    return (n-1)*(let(n-1)+let(n-2));
}
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d
",let(n));
    return 0;
}
原文地址:https://www.cnblogs.com/keshuqi/p/5957799.html