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];
}
全部评论
    for(inti =1; i <= n; i++) {         dp[i][1] =1;     }     for(inti =1; i <= n; i++) {         dp[i][i] =1;     } 感谢题解,不过代码有点小问题,两个for循环多余,做的事情在下面重复了,而且第二个for循环dp[i][i]数组越界😅
点赞 回复 分享
发布于 2019-06-07 11:47

相关推荐

不愿透露姓名的神秘牛友
06-19 17:02
鼠鼠深知pdd的强度很大,但是现在没有大厂offer,只有一些不知名小厂我是拒绝等秋招呢,还是接下?求大家帮忙判断一下!
水中水之下水道的鼠鼠:接了再说,不图转正的话混个实习经历也不错
投递拼多多集团-PDD等公司10个岗位 >
点赞 评论 收藏
分享
06-04 09:27
门头沟学院 Java
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务