题解 | #放苹果#

放苹果

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")



全部评论

相关推荐

04-06 11:24
已编辑
太原学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务