Uva 11137 Ingenuous Cubrency(整数划分方案 背包)
#define LL long long
#define M 10000
#define DEBUG puts("It's here!")
#define INF 1<<29
#define CLS(x,v) memset(x,v,sizeof(x))
#define FU(i,a,n) for(int i=a;i<(n);++i)
#define FD(i,a,n) for(int i=n;i>a;++i)
#define Three(x) ((x)*(x)*(x))
#define filer freopen("C:\\Users\\sq\\Desktop\\1.in","r",stdin)
#define filew freopen("C:\\Users\\sq\\Desktop\\2.out","w",stdout)
int a[22];
LL dp[M]={0};
int n,k;
void solve()
{
for(int i=0;i<=21;i++)
a[i]=Three(i);
dp[0]=1;
for(int i=1;i<=21;i++)
for(int j=a[i];j<M;j++)
dp[j]+=dp[j-a[i]];
}
int main()
{
int n; solve();
while(~scanf("%d",&n))
{
printf("%lld\n",dp[n]);
}
return 0;
}
本文深入解析了Uva11137 Ingenuous Cubrency问题,即整数划分方案背包问题。通过详细解释其核心算法,包括使用动态规划解决该问题的步骤,以及提供代码实现,帮助读者理解如何通过动态规划解决类似问题。代码示例中包含了预处理和动态规划的主要部分,如定义常量、初始化动态规划数组、遍历求解过程等。
&spm=1001.2101.3001.5002&articleId=38533037&d=1&t=3&u=74c5b5ac78b14c018b0d76be9b7e92b9)
2260

被折叠的 条评论
为什么被折叠?



