题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2069

Problem Description

Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and 1-cent. We want to make changes with these coins for a given amount of money.
For example, if we have 11 cents, then we can make changes with one 10-cent coin and one 1-cent coin, or two 5-cent coins and one 1-cent coin, or one 5-cent coin and six 1-cent coins, or eleven 1-cent coins. So there are four ways of making changes for 11 cents with the above coins. Note that we count that there is one way of making change for zero cent.
Write a program to find the total number of different ways of making changes for any amount of money in cents. Your program should be able to handle up to 100 coins.

Input

The input file contains any number of lines, each one consisting of a number ( ≤250 ) for the amount of money in cents.

Output

For each input line, output a line containing the number of different ways of making changes with the above 5 types of coins.

Sample Input

11
26

Sample Output

4
13

解题思路:这道题可以用暴力枚举直接解决。枚举每种硬币的数量为0~n/这种币值即可,为了避免TLE超时,最后一种硬币换成表达式来判断,用num来计数情况,其中注意所有币值的总数量<=100。

AC代码一(直接暴力):

 #include<bits/stdc++.h>
using namespace std;
int main()
{
int n,num;
while(cin>>n){
num=;
for(int a=;a*<=n;a++){
for(int b=;b*<=n;b++){
for(int c=;c*<=n;c++){
for(int d=;d*<=n;d++){//剩下一步由减法来,避免超时
if(n-a*-b*-c*-d*>= && a+b+c+d+n-a*-b*-c*-d*<=)num++;
}
}
}
}
cout<<num<<endl;
}
return ;
}

AC代码二之dp:先贴一下此题的思路:题解报告:hdu 1284 钱币兑换问题(简单数学orDP)这题就是多加了一个维度,因为题目中规定了硬币的数量最多取100个,因此定义dp[k][j]表示前k个硬币组成钱j的总方案数,那么易得状态转移方程:dp[k][j]+=dp[k-1][j-a[i]],意思是减去当前某种一个币值,那么就会增加前k-1个硬币组成钱j-a[i]的方案数dp[k-1][j-a[i]](对于同一种硬币a[i]来讲)。预处理打表,然后累加用k(k∈[0,100])个硬币组成钱n的所有方案数即为最终的方案总数。注意:①初始化dp[0][0]=1,表示前0个硬币组成钱0的方案数为1(原因和上面链接博文里的一样)答案要累加不超过i:0-->100得到的总方案数,一定要从0开始累加,因为有0个硬币时的方案数。

 #include<bits/stdc++.h>
using namespace std;
int main(){
int n,sum,a[]={,,,,},dp[][];
memset(dp,,sizeof(dp));dp[][]=;
for(int i=;i<;++i)//种数
for(int k=;k<=;++k)//硬币总数不超过100
for(int j=a[i];j<=;++j)
dp[k][j]+=dp[k-][j-a[i]];
while(cin>>n){
sum=;
for(int k=;k<=;++k)sum+=dp[k][n];//累加用0~100组成钱n的所有方案数
cout<<sum<<endl;
}
return ;
}

题解报告:hdu 2069 Coin Change(暴力orDP)的更多相关文章

  1. HDU 2069 Coin Change

    Coin Change Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...

  2. hdu 2069 Coin Change(完全背包)

    Coin Change Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  3. HDU 2069 Coin Change(完全背包变种)

    题意:给你5种银币,50 25 10 5 1,问你可以拼成x的所有可能情况个数,注意总个数不超过100个 组合数问题,一看就是完全背包问题,关键就是总数不超过100个.所有我们开二维dp[k][j], ...

  4. HDOJ 2069 Coin Change(母函数)

    Coin Change Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. hdu2069(Coin Change)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2069 Coin Change Time Limit: 1000/1000 MS (Java/Other ...

  6. 题解报告:hdu 1398 Square Coins(母函数或dp)

    Problem Description People in Silverland use square coins. Not only they have square shapes but also ...

  7. 题解报告:hdu 1028 Ignatius and the Princess III(母函数or计数DP)

    Problem Description "Well, it seems the first problem is too easy. I will let you know how fool ...

  8. 【LeetCode】518. Coin Change 2 解题报告(Python)

    [LeetCode]518. Coin Change 2 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目 ...

  9. JSU省赛队员选拔赛个人赛1(Coin Change、Fibbonacci Number、Max Num、单词数、无限的路、叠筐)

    JSU省赛队员选拔赛个人赛1 一.题目概述: A.Coin Change(暴力求解.动态规划)     B.Fibbonacci Number(递推求解) C.Max Num(排序.比较) D.单词数 ...

随机推荐

  1. 【APUE】孤儿进程与僵死进程

    基本概念: 在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程.子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束. 当一个 进程 ...

  2. vue + vue-lazyload 实现图片懒加载

    1.安装 npm i vue-lazyload -S 2.配置 main.js /***图片模板等懒加载 start ***/ import VueLazyload from 'vue-lazyloa ...

  3. Jenkins系列之-—05 节点配置

    一.节点配置 1. 进入[系统管理]-[节点管理]-[新建节点],录入节点名,选择Permanent Agent,下一步录入节点详细配置信息,如下: Name:节点名称 Description:节点描 ...

  4. Javascript将字符串日期格式化为yyyy-mm-dd的方法 js number 类型 没有length 属性 string类型才有

    日期格式化相信对于大家来说再熟悉不过,最近工作中自己利用Javascript就写了一个,现在将实现的代码分享给大家,希望对有需要的朋友们能有所帮助,感兴趣的朋友们下面来一起看看吧. 这篇文章主要介绍的 ...

  5. 深入源代码解析Android中的Handler,Message,MessageQueue,Looper

    本文主要是对Handler和消息循环的实现原理进行源代码分析.假设不熟悉Handler能够參见博文< Android中Handler的使用>,里面对Android为何以引入Handler机 ...

  6. leetcode——Implement strStr() 实现字符串匹配函数(AC)

    Implement strStr(). Returns a pointer to the first occurrence of needle in haystack, or null if need ...

  7. [BZOJ2144]国家集训队 跳跳棋

    题目描述 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子. 我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置.我们要通过最少的跳动把他们的位置移动 ...

  8. [JS进阶] HTML5 之文件操作(file)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/oscar999/article/details/37499743 前言 在 HTML 文档中 < ...

  9. HDU1698 Just a Hook —— 线段树 区间染色

    题目链接:https://vjudge.net/problem/HDU-1698 In the game of DotA, Pudge’s meat hook is actually the most ...

  10. YTU 2920: Shape系列-7

    2921: Shape系列-7 时间限制: 1 Sec  内存限制: 128 MB 提交: 156  解决: 129 题目描述 小强做的Shape类在本次的测试中出了点状况,发现原来是其中的area函 ...