麻烦大佬解释下这题的递推公式!

不是太能理解题解里给出的D[n]=(n-1)*(D[n-1]+D[n-2])
另一种写法:
#include <bits/stdc++.h>
using namespace std;
const int Mod=1e9+7;
int main()
{
    int n;
    string s;
    cin>>n;
    long long a[n+5];
    getline(cin,s);
    a[0]=0,a[1]=1;
    for(int i=2;i<=n;i++)
        a[i]=(i-1)*(a[i-1]+a[i-2])%Mod;
    cout<<a[n]<<"\n";
    return 0;
}
也是无法理解这个公式.
萌新求救!
全部评论
题解里表述的比较清楚的,对于n对点,可以有两种情况转移过来。 一是在n-1对点的基础上断开其中的一对,连上两端,所以是(n-1)*D[n-1] 一种是在n-2对点的基础上加上两队点,因为要错开,所以只能选n-1个,所以是(n-1)*D[n-2]
点赞 回复 分享
发布于 2020-02-10 13:35

相关推荐

不愿透露姓名的神秘牛友
07-11 15:08
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务