某人写了n封信和n个信封,如果所有的信都装错了信封。求所有信都装错信封共有多少种不同情况。
一个信封数n(n<=20)
一个整数,代表有多少种情况。
2
1
3
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]; }