读书人

wikioi-1039-数的区划

发布时间: 2013-09-26 10:32:34 作者: rapoo

wikioi-1039-数的划分

将整数n分成k份,且每份不能为空,任意两种划分方案不能相同(不考虑顺序)。

dp[i][j]:把数i分成k分的方案数

则:dp[i][j]=sum(dp[i-j][t])(t>=1&&t<=j)

#include <iostream>#include<stdio.h>#include<cstring>#include <algorithm>using namespace std;int dp[501][21];int main(){    int n,k,i,j,t;    while(~scanf("%d %d",&n,&k))    {        memset(dp,0,sizeof(dp));        for(i=0;i<21;i++)dp[i][i]=1;        for(i=1;i<=n;i++)        {            for(j=1;j<=k&&j<i;j++)            {                for(t=1;t<=j;t++)                {                    if((i-j)>=t)dp[i][j]+=dp[i-j][t];                }            }        }        cout<<dp[n][k]<<endl;    }    return 0;}


读书人网 >编程

热点推荐