UVA674- Coin Change
来源:互联网 发布:什么是资本化 知乎 编辑:程序博客网 时间:2024/05/18 03:37
题意:用所给的硬币面值构成所需的面值
思路:因为所用硬币数量不限,所以很容易想到完全背包。
递推:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 10005;int n;int coin[] = {1, 5, 10, 25, 50};long long d[MAXN];void dp() { memset(d, 0, sizeof(d)); d[0] = 1; for (int i = 0; i < 5; i++) for (int j = coin[i]; j < MAXN; j++) d[j] += d[j - coin[i]];}int main() { dp(); while (scanf("%d", &n) != EOF) { printf("%lld\n", d[n]); } return 0;}
记忆化搜索:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 10005;int n;int coin[] = {1, 5, 10, 25, 50};long long d[MAXN][6];void init() { memset(d, -1, sizeof(d)); for (int i = 0; i < 5; i++) d[0][i] = 1;}long long dp(int s, int m) { if (d[s][m] != -1) return d[s][m]; d[s][m] = 0; for (int i = m; i < 5 && s >= coin[i]; i++) d[s][m] += dp(s - coin[i], i); return d[s][m];}int main() { init(); while (scanf("%d", &n) != EOF) { long long ans = dp(n, 0); printf("%lld\n", ans); } return 0;}
0 0
- UVA674- Coin Change
- UVa674 Coin Change
- uva674 - - Coin Change
- uva674 - Coin Change(硬币找零)
- [动态规划]UVA674 - Coin Change
- UVA674 Coin Change 简单的DP
- uva674 - Coin Change(完全背包)
- Coin Change
- Coin Change
- Coin change
- Coin Change
- Coin change
- Coin Change
- Coin Change
- Coin Change
- Coin Change
- Coin Change
- Coin Change
- 微信兵锋所向 阿里必将血流成河
- grub-install
- STM32的IAP实现
- 地图的使用和自定义大头针
- windbg导出stl map和set的插件
- UVA674- Coin Change
- 俄方物色哦哥哥哈皮克的片尾曲平均无故
- Lucene简介,教程详解
- Android大图片裁剪终极解决方案(上:原理分析)
- 常用的 DOCTYPE 声明
- 与Linus Torvalds“并列”,虚拟化天才程序员法布里斯贝拉
- 关于Windows消息队列的几个问题
- 最短路问题 小结
- N!