错排公式
题目:某人写了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\n",let(n));
return 0;
}

浙公网安备 33010602011771号