题目链接:https://vjudge.net/contest/59424#problem/A

题目大意:

有5种硬币, 面值分别为1、5、10、25、50,现在给出金额,问可以用多少种方式组成该面值。

解题思路:

首先我们可以想到,用这些硬币组成11有多少种.

就是组成10的种数,加上组成6的种数,加上组成1的种数,因为这些面值都是加上一枚硬币就得到11了.

然后我们又能继续去求1组成10的种数,那么明显就是9,5,0的组成数的和.

需要注意的是1+5自底向上的方法,需要注意的是1+5和5+1是一种的,所以要处理一下,从小往大排就不会错了。

这道题我还不是很懂,以后再看看。                           转载于>>>

记忆化搜索:很白痴的算法,直接交给下一层去算,算完记录下来以免之后重复算。

#include <cstdio>
#include <cstring>
const int MAXN = 8000;
const int coin[5] = {1, 5, 10, 25, 50};
int n;
long long dp[MAXN][5];  long long solve(int i, int s) {  if (dp[s][i] != -1)  return dp[s][i];  dp[s][i] = 0;  for (int j = i; j < 5 && s >= coin[j]; j++)  dp[s][i] += solve(j, s - coin[j]);  return dp[s][i];
}  int main() {  memset(dp, -1, sizeof(dp));  for (int i = 0; i < 5; i++)  dp[0][i] = 1;  while (scanf("%d", &n) != EOF)  printf("%lld\n", solve(0, n));  return 0;
}  

递推:自底向上的方法,需要注意的是1+5和5+1是一种的,所以要处理一下,从小往大排就不会错了。

#include <cstdio>
const int MAXN = 8000;
int n, coin[5] = {1, 5, 10, 25, 50};
long long dp[MAXN] = {1};  int main() {  for (int i = 0; i < 5; i++)  for (int j = 0; j < MAXN - 100; j++)  dp[j + coin[i]] += dp[j];  while (scanf("%d", &n) != EOF)  printf("%lld\n", dp[n]);  return 0;
}  

2018-04-30

转载于:https://www.cnblogs.com/00isok/p/8974409.html

uva 674 Coin Change 换钱币【完全背包】相关推荐

  1. UVA 674 Coin Change ,Commence

    记忆化搜索,初期.个人感觉从DFS的角度理解DP状态更好一些 #include <map> #include <set> #include <list> #incl ...

  2. Lightoj 1231 - Coin Change (I) (裸裸的多重背包)

    题目链接: Lightoj  1231 - Coin Change (I) 题目描述: 就是有n种硬币,每种硬币有两个属性(价值,数目).问用给定的硬币组成K面值,有多少种方案? 解题思路: 赤果果的 ...

  3. 利用动态规划(DP)解决 Coin Change 问题

    问题来源 这是Hackerrank上的一个比较有意思的问题,详见下面的链接: https://www.hackerrank.com/challenges/ctci-coin-change 问题简述 给 ...

  4. Coin Change【硬币找零】

    一.题目 英文:Coin Change 中文:硬币找零 二.内容要求 英文:You are given coins of different denominations and a total amo ...

  5. C++coin change 硬币找零(附完整源码)

    coin change 硬币找零 coin change 硬币找零算法的完整源码(定义,实现,main函数测试) coin change 硬币找零算法的完整源码(定义,实现,main函数测试) #in ...

  6. hdu2069(Coin Change)

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

  7. LeetCode 518 Coin Change 2 (python)

    目录 LeetCode 518 Coin Change 2 (python) Code 欢迎一起来参与leetcode刷题项目 LeetCode 518 Coin Change 2 (python) ...

  8. UVA674 Coin Change 简单的DP

    刚开始一直都是RE,这道题目 题目的意思跟目的跟HDU2069是一样的,只是题目要求有了点变化,HDU2069是最多用100个钱币,这里呢 最多输入的 钱为7489,自然而然最多用到的钱币为7489个 ...

  9. UVA 11259 Coin Changing Again

    题意:有4种硬币,面值分别为c1,c2,c3,c4,然后给出Q组查询.每组查询给出5个数d1,d2,d3,d4,v,分别表示面值为ci的硬币共有di个,然后要求将其凑成总值为v的方案数. 数据范围大致 ...

最新文章

  1. oracle账号密码修改后特别容易锁定_Oracle数据库账号总是被锁?通过这里就可以发现是哪个IP造成的...
  2. 从 exe.config 读取appSettings 中的配置数据
  3. idea access数据库连接_idea代码神器:根据表生成代码
  4. oppo如何更新计算机,OPPO R17Pro手机怎么升级和降级系统?
  5. Excel单元格里面提取或去掉某些字符
  6. 《论文笔记》COVINS: Visual-Inertial SLAM for Centralized Collaboration
  7. 越狱Season 1-Episode 15: By the Skin and the Teeth
  8. 通过Web Api 和 Angular.js 构建单页面的web 程序
  9. pytorch torch.nn.Module
  10. 查看Android打包时签名文件keystore的MD5值
  11. gitlab在docker报错could not open /var/opt/gitlab/.ssh/authorized_keys解决
  12. Docker和Pycharm
  13. Mac系统上查看端口占用和释放端口
  14. 2019北邮网安院机试真题(回忆版)@lantin
  15. ios 长按 放大镜_如何在iOS 10中将iPhone的相机用作放大镜
  16. 开机后黑屏看不到桌面_教你win10电脑开机后黑屏进不了桌面的排查解决方案
  17. Android 6.0 7.0 8.0特性变更
  18. matlab parfor使用
  19. 利用串口线获取中兴ZXV10 B760EV3机顶盒获取ROOT权限
  20. 对症下药 硬盘坏道检测与修复全攻略(组图)

热门文章

  1. 今天聊:做好前端的 10 个习惯
  2. 前端当前是否处在一个糟糕的时代?
  3. 一位00后前端2年经验的成长历程
  4. 0基础入门前端,会遇到哪些困难?
  5. web前端开发要不要找个师傅带?
  6. JavaSE02、方法,递归迭代
  7. html元素自己属性代码,jQuery如何操作HTML的元素和属性?(代码详解例)
  8. 森林怎么训练野人_138年前抓的“野人女孩”,最终命运如何?死前心愿让人心酸...
  9. c++代码好玩_Python开源学习:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...
  10. php点击弹出文字代码,js实现鼠标点击页面弹出自定义文字效果