IT民工
加油!

递推,状态转移方程:dp[j] = dp[j - a[i]]; 依题意a[i] = i^3.

#include<stdio.h>
#include<string.h>
#define MAXD 10005

long long dp[MAXD], a[25];
int N;

int main()
{
for( int i = 1; i <= 21; i ++)
a[i] = i * i * i;
memset( dp, 0, sizeof dp);
dp[0] = 1;
for( int i = 1; i <= 21; i ++)
for( int j = 0; j <= 10000; j ++)
if( j >= a[i])
dp[j] += dp[ j - a[i]];
while( scanf( "%d", &N) == 1)
{
printf( "%lld\n", dp[N]);
}
return 0;
}


 

posted on 2011-12-03 00:15  找回失去的  阅读(201)  评论(0编辑  收藏  举报