关闭

wikioi 1039 数的划分

342人阅读 评论(0) 收藏 举报

http://wikioi.com/problem/1039/

这道dp很不错(题解中有背包做法)

一个整数划分成k份且k>=2必定有一种方法中有1,分开这个1,另外的都是大于2的,这时都减1,于是又会出现分出1

if(i>=j) dp[i][j]=dp[i-j][j]+dp[i-1][j-1];

得到关系式

#include<cstdio>
int n,k;
int dp[210][10]={0};
int main()
{
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)
    {
            dp[i][1]=1;
    }
    for(int i=1;i<=n;i++)
    for(int j=2;j<=k;j++)
    {
            if(i>=j) dp[i][j]=dp[i-j][j]+dp[i-1][j-1];
    }
    printf("%d",dp[n][k]);
    return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:18143次
    • 积分:585
    • 等级:
    • 排名:千里之外
    • 原创:42篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论