【UVA11137】Ingenuous Cubrency——完全背包

题意:给你一个数n,将n分解成若干个正整数的立方之和,问有多少种方式。

分析:将一个数 i 的立方数作为一个物品,体积为 i3 ,每一个物品的个数没有限制,转化为完全背包的形式。

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <iostream>
#include <algorithm>

using namespace std;

typedef long long LL;

const int Max = 11000;

LL Dp[Max];

void Init()
{
    memset(Dp,0,sizeof(Dp));

    Dp[0 ] =1;

    for(LL i = 1;i<=100;i++)
    {
        for(LL j = i*i*i;j<Max;j++)
        {
            Dp[j]+=Dp[j-i*i*i];
        }
    }
}

int main()
{
    int n;

    Init();

    while(~scanf("%d",&n))
    {
        printf("%lld\n",Dp[n]);
    }
    return 0;
}

你可能感兴趣的:(【UVA11137】Ingenuous Cubrency——完全背包)