一开始竟然没看出来是完全背包。。navie!!!!
dp[i]+=dp[i-v];
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAX=10010;
int s[23];
long long dp[MAX];
int main(){
for(int i=1;i<23;i++)
s[i]=i*i*i;
dp[0]=1;
for(int i=0;i<MAX;i++)
dp[i]=1;
for(int i=2;i<=21;i++){
for(int j=s[i];j<MAX;j++){
dp[j]+=dp[j-s[i]];
}
}
int n;
while(scanf("%d",&n)!=EOF){
printf("%lld\n",dp[n]);
}
return 0;
}