题解 | #放苹果#
放苹果
https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf
#include <bits/stdc++.h>
using namespace std;
// 非递归 只是动态规划
int myfun(int m, int n)
{
vector<vector<int>> dp(m+1, vector<int>(n+1, 0));
for(int j=0; j<=n; ++j)
{
dp[0][j] = 1;
}
for(int i=0; i<=m; ++i)
{
dp[i][1] = 1;
}
for(int i=0; i<=m; ++i)
{
for(int j=1; j<=n; ++j)
{
if(j>i)
{
dp[i][j] = dp[i][i];
}
else {
dp[i][j] = dp[i][j-1] + dp[i-j][j];
}
}
}
return dp[m][n];
}
int main() {
int m, n;
while (cin >> m >> n) { // 注意 while 处理多个 case
cout<<myfun(m, n)<<endl;
}
}
// 64 位输出请用 printf("%lld")

查看1道真题和解析