dp[i][j]表示前i个数字构成的数列中,恰有j个‘<’号的方案数(‘>’号就有i - j - 1个)。
dp[i][j] = dp[i - 1][j - 1] * (i - j) + dp[i - 1][j] * (j + 1)
#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;}有大佬能解释一下转移方程吗。。。太蠢,看答案居然都看不懂