uva 674 Coin Change 换钱币【完全背包】
题目链接: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 换钱币【完全背包】相关推荐
- UVA 674 Coin Change ,Commence
记忆化搜索,初期.个人感觉从DFS的角度理解DP状态更好一些 #include <map> #include <set> #include <list> #incl ...
- Lightoj 1231 - Coin Change (I) (裸裸的多重背包)
题目链接: Lightoj 1231 - Coin Change (I) 题目描述: 就是有n种硬币,每种硬币有两个属性(价值,数目).问用给定的硬币组成K面值,有多少种方案? 解题思路: 赤果果的 ...
- 利用动态规划(DP)解决 Coin Change 问题
问题来源 这是Hackerrank上的一个比较有意思的问题,详见下面的链接: https://www.hackerrank.com/challenges/ctci-coin-change 问题简述 给 ...
- Coin Change【硬币找零】
一.题目 英文:Coin Change 中文:硬币找零 二.内容要求 英文:You are given coins of different denominations and a total amo ...
- C++coin change 硬币找零(附完整源码)
coin change 硬币找零 coin change 硬币找零算法的完整源码(定义,实现,main函数测试) coin change 硬币找零算法的完整源码(定义,实现,main函数测试) #in ...
- hdu2069(Coin Change)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2069 Coin Change Time Limit: 1000/1000 MS (Java/Other ...
- LeetCode 518 Coin Change 2 (python)
目录 LeetCode 518 Coin Change 2 (python) Code 欢迎一起来参与leetcode刷题项目 LeetCode 518 Coin Change 2 (python) ...
- UVA674 Coin Change 简单的DP
刚开始一直都是RE,这道题目 题目的意思跟目的跟HDU2069是一样的,只是题目要求有了点变化,HDU2069是最多用100个钱币,这里呢 最多输入的 钱为7489,自然而然最多用到的钱币为7489个 ...
- UVA 11259 Coin Changing Again
题意:有4种硬币,面值分别为c1,c2,c3,c4,然后给出Q组查询.每组查询给出5个数d1,d2,d3,d4,v,分别表示面值为ci的硬币共有di个,然后要求将其凑成总值为v的方案数. 数据范围大致 ...
最新文章
- oracle账号密码修改后特别容易锁定_Oracle数据库账号总是被锁?通过这里就可以发现是哪个IP造成的...
- 从 exe.config 读取appSettings 中的配置数据
- idea access数据库连接_idea代码神器:根据表生成代码
- oppo如何更新计算机,OPPO R17Pro手机怎么升级和降级系统?
- Excel单元格里面提取或去掉某些字符
- 《论文笔记》COVINS: Visual-Inertial SLAM for Centralized Collaboration
- 越狱Season 1-Episode 15: By the Skin and the Teeth
- 通过Web Api 和 Angular.js 构建单页面的web 程序
- pytorch torch.nn.Module
- 查看Android打包时签名文件keystore的MD5值
- gitlab在docker报错could not open /var/opt/gitlab/.ssh/authorized_keys解决
- Docker和Pycharm
- Mac系统上查看端口占用和释放端口
- 2019北邮网安院机试真题(回忆版)@lantin
- ios 长按 放大镜_如何在iOS 10中将iPhone的相机用作放大镜
- 开机后黑屏看不到桌面_教你win10电脑开机后黑屏进不了桌面的排查解决方案
- Android 6.0 7.0 8.0特性变更
- matlab parfor使用
- 利用串口线获取中兴ZXV10 B760EV3机顶盒获取ROOT权限
- 对症下药 硬盘坏道检测与修复全攻略(组图)
热门文章
- 今天聊:做好前端的 10 个习惯
- 前端当前是否处在一个糟糕的时代?
- 一位00后前端2年经验的成长历程
- 0基础入门前端,会遇到哪些困难?
- web前端开发要不要找个师傅带?
- JavaSE02、方法,递归迭代
- html元素自己属性代码,jQuery如何操作HTML的元素和属性?(代码详解例)
- 森林怎么训练野人_138年前抓的“野人女孩”,最终命运如何?死前心愿让人心酸...
- c++代码好玩_Python开源学习:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...
- php点击弹出文字代码,js实现鼠标点击页面弹出自定义文字效果