题解 | #放苹果#
放苹果
https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf
#include <iostream> #include <vector> using namespace std; int main() { int apple_num; int p_num; cin>>apple_num>>p_num; vector<vector<int>> dp(apple_num, vector<int>(p_num,0)); for(int i=0;i<p_num;i++) { dp[0][i]=1; } for(int i=1; i<apple_num; i++) { dp[i][0]=1; } for (int i=1; i<apple_num; i++) { for (int j=1; j<p_num; j++) { if (i-j-1>=0) { dp[i][j]=dp[i][j-1]+dp[i-j-1][j]; } if (i-j==0) { dp[i][j]=dp[i][j-1]+1; } if (i-j<0) { dp[i][j]=dp[i][j-1]; } } } cout<<dp[apple_num-1][p_num-1]<<endl; } // 64 位输出请用 printf("%lld")