/**/
#include<stdio.h>
int main()
{
int i,n;
long long a[25];
while(~scanf("%d",&n))
{
a[1]=0;
a[2]=1;
for(i=3; i<=n; i++)
{
a[i]=(i-1)*(a[i-1]+a[i-2]);
}
printf("%lld\n",a[n]);
}
return 0;
}
递推关系式:f[n]=(n-1)(f[n-1]+f[n-2]);
递推边界 :f[1]=0;f[2]=1;
第一步:把编号为n的信放在前n-1个位置中,共有n-1种方法
第二步:(1):把编号为k的信放在n的位置,剩下的n-2封信有f[n-2]种方法
(2 :不把编号为k的信放在n的位置,对于这n-1封信,放在n-1个位置且各不对应,共有f[n-1]个位置
错排公式(递推)
最新推荐文章于 2022-05-01 19:42:44 发布