动态规划,对于n个数字,k个<, 可以转为n-1数字中k-1个<和n-1个数字中k个<。两种情况分别有(k+1)种与(n-k)种情况
// Problem#: 1687
// Submission#: 3250428
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University
#include<iostream>
using namespace std;
int DP[101][101];
int main() {
DP[1][0] = 1;
for (int n = 2; n < 101; n++) {
DP[n][0] = 1;
for (int k = 1; k < n; k++) {
DP[n][k] = DP[n - 1][k] * (k + 1) + DP[n - 1][k - 1] * (n - k);
DP[n][k] %= 2007;
}
}
int n, k;
while (cin >> n >> k) {
cout << DP[n][k] << endl;
}
}