uva 357 Let Me Count The Ways(01背包)

2014-11-23 21:58:38 来源: 作者: 浏览: 8
题目大意:有5种硬币, 面值分别为1、5、10、25、50,现在给出金额,问可以用多少种方式组成该面值。
解题思路:和uva674是一样的, 只是上限不一样, 还有注意下输出。
 
#include   
#include   
const int N = 30005;  
const int val[5] = {1, 5, 10, 25, 50};  
  
long long cnt[N];  
  
void Init() {  
    memset(cnt, 0, sizeof(cnt));  
    cnt[0] = 1;  
    for (int i = 0; i < 5; i++) {  
    for (int j = val[i]; j < N; j++)  
        cnt[j] += cnt[j - val[i]];  
    }  
}  
  
int main() {  
    Init();  
    int n;  
    while (scanf("%d", &n) == 1) {  
    if (cnt[n] <= 1)  
        printf("There is only 1 way to produce %d cents change.\n", n);  
    else  
        printf("There are %lld ways to produce %d cents change.\n", cnt[n], n);  
    }  
    return 0;  
}  


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: