C++动态规划版
#include<iostream>
using namespace std;
int dp[201][7];
int main() {
int n, k;
cin >> n >> k;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= k; j++) {
if( j > i ) {
// 无法将i分成大于i份
dp[i][j] = 0;
} else if( 1 == j || i == j) {
// i个数分为1份和个数分为i份情况只有一种
dp[i][j] = 1;
} else {
// 这里分为两种情况考虑:含1还是不含1
dp[i][j] = dp[i - 1][j - 1] + dp[i - j][j];
}
}
}
cout << dp[n][k];
} 