uva357

来源:互联网 发布:java list 获取第一个 编辑:程序博客网 时间:2024/05/18 03:26

题目大意:
给定一些面值的钱币,问你有几种方法可以拼凑成要求的价格。

思路:
动态规划

代码:

#include <iostream>using namespace std;#include <cstring>#include <stdio.h>int coin[5] = {1,5,10,25,50};long long dp[30010];int main() {    int n;//  memset(dp,1,sizeof(dp));    dp[0] = 1;    for(int i = 0; i < 5;i++) {        for(int j = 0; j < 30000; j++)            dp[j + coin[i]] += dp[j];    }    while(scanf("%d",&n)!=EOF){        if(dp[n] == 1)            printf("There is only %d way to produce %d cents change.\n",1,n);        else             printf("There are %lld ways to produce %d cents change.\n",dp[n],n);    }    return 0;}
0 0
原创粉丝点击