題目大意:由21種規模的立方體(r 1~21),現在給出一個體積, 要求計算可以用多少種方式組成。 解題思路:完全背包, 和uva674是一樣的, 只是這裡的體積是r ^ 3。
#include <stdio.h> #include <string.h> const int N = 10005; long long dp[N]; void Init() { int t; dp[0] = 1; for (int i = 1; i <= 21; i++) { t = i * i * i; for (int j = t; j < N; j++) dp[j] += dp[j - t]; } } int main() { Init(); int n; while (scanf("%d", &n) == 1) { printf("%lld\n", dp[n]); } return 0; }