标签:
// uva 11137 Ingenuous Cubrency // // 题目大意: // // 输入正整数n,将n写成若干个数的立方之和,有多少种 // // 解题思路: // // 注意到n只有10000,22的3次方就超过了10000,则用 // d(i,j)表示用前i个数表示j的方法数,则完全背包套用模板 // d(i,j) = d(i-1,j) + d(i , j - i * i * i); // // 感悟: // // 这道题,就是完全背包嘛,要注意数据的范围,做题的时候 // 这就是我的感悟~~~FINGTING #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; typedef long long ll; ll d[23][10008]; void init(){ memset(d,0,sizeof(d)); d[0][0] = 1; for (int i=1;i<=22;i++){ for (int j=0;j <=10000;j++){ if (j < i * i * i) d[i][j] = d[i-1][j]; else d[i][j] =d[i-1][j] + d[i][j- i * i * i]; } } } int main(){ init(); int n; while(scanf("%d",&n)!=EOF){ cout << d[22][n] << endl; } }
标签:
原文地址:http://www.cnblogs.com/KingJourney/p/4705132.html