wiki 1039 整数划分

来源:互联网 发布:网络模拟器 编辑:程序博客网 时间:2024/06/08 20:44

我的AC代码:

#include <iostream>#include <stdio.h>#include <string.h>using namespace std;int n,k;int dp[7][210][210];  //dp[i][j][k]表示第i个数,取值为k,和为j的情况下的划分方案数int vis[7][210][210];void init(){    scanf("%d %d", &n, &k);    memset(dp, 0, sizeof(dp));    memset(vis, 0, sizeof(vis));    for(int i = 1; i <= n/k; i++){        dp[1][i][i] = 1;    }}void solve (){    for(int i = 1; i < k; i++){        for(int j = 1; j <= n; j++){            for(int l = 1; l <= n; l++){                if(dp[i][j][l]){                    for(int u = l; u <= (n-j)/(k-i); u++) dp[i+1][j+u][u] += dp[i][j][l];                }            }        }    }}int main(int argc, const char * argv[]){    init();    solve();    int result = 0;    for(int i = 1; i <= n-k+1; i++){        result += dp[k][n][i];    }    printf("%d\n", result);}


0 0