uva 11137(硬币dp)

来源:互联网 发布:大数据 精准医疗 ppt 编辑:程序博客网 时间:2024/05/22 05:09

题意:有从1^3到21^3一共21种面额的硬币,给一个目标值问有多少种方法。

题解:和之前做的一样,链接

#include <stdio.h>#include <string.h>const int N = 10005;int coin[22], n;long long f[N][22];long long dp(int k, int cur) {if (f[k][cur] != -1)return f[k][cur];long long sum = 0;for (int i = cur; i <= 21 && coin[i] <= k; i++)sum += dp(k - coin[i], i);f[k][cur] = sum;return sum;}int main() {for (int i = 1; i <= 21; i++)coin[i] = i * i * i; memset(f, -1, sizeof(f));for (int i = 1; i < 22; i++)f[0][i] = 1;while (scanf("%d", &n) != EOF)printf("%lld\n", dp(n, 1)); return 0;}


0 0
原创粉丝点击