有n个小朋友,每个小朋友有自己的座位。只有一个小朋友坐对位置,其他小朋友全部坐错座位的方式有多少种?
输入描述:
第一行,一个自然数,表示小朋友的个数
输出描述:
输出一个整数,表示符合条件的坐法有多少种
这个题根据全错位排列公式改一下就行了,全错位公式为:
Dn=(n-1)(Dn-1+Dn-2)
代码如下:
#include<iostream>
#include<vector>
#include<string>
#include<sstream>
#include<algorithm>
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 << n * func(n-1) << endl;
return 0;
}