ti
DP 可能算板子题?
当果子数小于盘子数时,i个盘子放j个果子,和i-1个盘子放j个果子方案数一样
当盘子数小于果子数时,考虑新加入的盘子要不要放果子,不放果子dp[i - 1][j],放果子就是每个盘子都要有果子的情况下,再看i个盘子放j-i个果子的方案数
#define ll int
#define vec vector<ll>
#define MAX 15
#define inf 0x3fffffff
ll dp[MAX][MAX];
int main() {
ll M, N;
while (cin >> M >> N) {
memset(dp, 0, sizeof(dp));
dp[0][0] = 1;
for (int i = 1; i <= N; i++) { //n个盘子
//j从零开始,也就是每行的第一列都是1 dp[i][0]=1 因为盘子可以为空
for (int j = 0; j <= M; j++) { //m个苹果
if (j >= i)dp[i][j] = dp[i - 1][j] + dp[i][j - i]; //如果果子数量大于盘子数量
else dp[i][j] = dp[i - 1][j]; //如果果子数量小于盘子数量,多出来这个盘子只能空着
}
}
cout << dp[N][M] << endl;
}
}