作者:NotDeep
链接:https://www.nowcoder.com/discuss/26079
来源:牛客网

不等式数列

分析

dp[i][j]表示前i个数字构成的数列中,恰有j个‘<’号的方案数(‘>’号就有i - j - 1个)。

dp[i][j] = dp[i - 1][j - 1] * (i - j) + dp[i - 1][j] * (j + 1)

参考code

#include <bits/stdc++.h>

using namespace std;

int n, k, ans;
int dp[1005][1005];
int main() {
    cin >> n >> k;
    for(int i = 1; i <= n; i++)
        dp[i][0] = 1;
    for(int i = 2; i <= n; i++)
        for(int j = 1; j <= k; j++)
            dp[i][j] = (dp[i - 1][j - 1] * (i - j) + dp[i - 1][j] * (j + 1)) % 2017;
    cout << dp[n][k] % 2017 << endl;
    return 0;
}
有大佬能解释一下转移方程吗。。。太蠢,看答案居然都看不懂