题目描述
有n个小朋友,每个小朋友都有自己的座位。恰好每个小朋友都坐错座位的方式有多少种?
n <= 66
输入描述:
第1行,一个自然数,表示小朋友的个数。
输出描述:
输出一个整数,表示符合条件的坐法有多少种。
推了半天公式最后还错了。。。百度了一下才知道有个全错位排列公式
故记录一下此类问题。
百度百科:全错位排列
代码如下:
#include <iostream>
using namespace std;
int nums[101];
int func(int n)
{
nums[2] = 1;
for (int i = 3; i <= n; i++) nums[i] = (i - 1) * (nums[i-1] + nums[i-2]);
return nums[n];
}
int main()
{
int n;
cin >> n;
cout << func(n) << endl;
return 0;
}
以上。