Uva - 674 - Coin Change

来源:互联网 发布:微信上打开淘宝链接 编辑:程序博客网 时间:2024/04/29 13:13

题意:用5种面值的硬币组成S有几种方法。

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=114&problem=615

——>>设d[i][j]为用前i种硬币组成j有几种方法,则

当j >= 第i种面值的硬币时,d[i][j] = d[i-1][j-c[i]] + d[i-1][j];

否则,只有一种选择,d[i][j] = d[i-1][j];

第一次没打表,就TLE了……打表AC!

#include <cstdio>#include <cstring>using namespace std;const int maxn = 7489 + 10;int d[6][maxn], c[] = {0, 50, 25, 10, 5, 1};int main(){    int S, i, j;    memset(d, 0, sizeof(d));        d[0][0] = 1;        for(i = 1; i <= 5; i++)            for(j = 0; j < maxn; j++)                if(j >= c[i]) d[i][j] = d[i][j-c[i]] + d[i-1][j];                else d[i][j] = d[i-1][j];    while(~scanf("%d", &S)) printf("%d\n", d[5][S]);    return 0;}


原创粉丝点击