题目
——YbtOJ-高效进阶2021-「基础算法」第1章 递推算法-【例题1】
题解
一个n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的一个排列就称为原排列的一个错排。
而研究一个排列的错排个数的问题,就称为错排问题(或称为更列问题)。
这道题就是求满足错排要求的排列数
。
没想到啊,居然会爆int……果然不论题目多简单都会有longlong的坑啊
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 30;
long long f[N];
int main() {
int n;
cin >> n;
f[1] = 0;
f[2] = 1;
for(int i = 3; i <= n; i ++)
f[i] = (i - 1) * (f[i - 1] + f[i - 2]);
cout << f[n];
return 0;
}