wikioi 1039 数的划分

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


阅读更多
上一篇wikioi 1038 一元三次方程求解
下一篇wikioi 1040 统计单词个数
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭