竞赛讨论区 > C++动态规划版
头像
~似曾相识燕归来
编辑于 2019-06-07 15:04
+ 关注

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];
}

全部评论

(1) 回帖
加载中...
话题 回帖

本文相关内容

等你来战

查看全部

热门推荐