HDU - 1028 Ignatius and the Princess III解题报告(线性dp)

题目大意:

给你一个数n,定义:把n表示成若干个数的和的形式焦作n的一种划分。问你这个n一共有多少种划分方法。(1<=n<=120)

分析:

dp建立:

状态:

dp [ i ] [ j ] 表示对 i 的划分方式中最小的数是 j 的划分方式数。

转移方程:

dp[i][j]=dp[ij][j]+dp[ij][j+1]+....+dp[ij][ij]

边界条件:

dp[t][t]=11<=t<=n

代码:

#include<iostream>
using namespace std;
int a[200]={0};
int dp[200][200]={0};

void init()
{
    for(int i=1;i<=120;i++)
    {
        for(int j=1;j<i;j++)
        {
            for(int k=0;k<=i-2*j;k++)
            {
                dp[i][j]=dp[i][j]+dp[i-j][j+k];
            }
        }
        dp[i][i]=1;
    }
}

int main()
{
    int n;
    init();
    while(cin>>n)
    {
        int s=0;
        for(int i=1;i<=n;i++)
        {
            s+=dp[n][i];
        }
        cout<<s<<endl;
    }
}
全部评论

相关推荐

12-25 16:26
已编辑
河北科技学院 Java
勇敢的牛油不服输:2800-300那不等于2500一个月吗兄弟们
点赞 评论 收藏
分享
专业嗎喽:个人信息名字太大,合到电话邮箱那一栏就行,有党员写过党,剩下其他全删,站空太大了 把实习经历丰富,放最前面,然后是个人评价,技能之类的,然后是学校信息。项目经历最后面,可以就选一个自己擅长的。 现在是学校不是92就扣分的,没必要放前面。 然后现在看重实习经历>竞赛经历(校园经历)>课程项目经历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务