题目描述
某人写了n封信和n个信封,如果所有的信都装错了信封。求所有信都装错信封共有多少种不同情况。
输入输出格式
输入格式:
一个信封数n(n<=20)
输出格式:
一个整数,代表有多少种情况。
输入输出样例
输出样例#2: 复制
2
思路:错排公式。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int f[25];
int main(){
scanf("%d",&n);
f[1]=0;f[2]=1;
for(int i=3;i<=n;i++)
f[i]=(f[i-1]+f[i-2])*(i-1);
cout<<f[n];
}