jzoj5195. 【NOIP2017提高组模拟7.3】A(递推,打表)

Description

Input

Output

Sample Input

7 3

Sample Output

4

Data Constraint

Hint

思路:

一眼看去好像第二类斯特林数啊,但打了个表发现不是

其实怎么证明我也不太会

但打表后我们得到了一个递推式:

dp[i][j]=dp[i-1][j-1]+dp[i-j][j];

二维递推即可

代码:

#include<iostream>
#include<cstdio>
#define rii register int i
#define rij register int j 
#define p 998244353
using namespace std;
long long dp[5005][5005],n,k;
int main()
{
    scanf("%d%d",&n,&k);
    dp[1][1]=1;
    for(rii=2;i<=n;i++)
    {
        for(rij=1;j<=i;j++)
        {
            dp[i][j]=dp[i-1][j-1]+dp[i-j][j];
            dp[i][j]%=p;
        }
    }
    cout<<dp[n][k];
}

 

原文地址:https://www.cnblogs.com/ztz11/p/9490436.html