ACM动态规划之最少钱币问题
2015-09-13 15:16
399 查看
题目描述:
这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例
如:给定了 6 种钱币面值为 2、5、10、20、50、100,用来凑 15 元,可以用 5 个 2 元、1
个 5 元,或者 3 个 5 元,或者 1 个 5 元、1 个 10 元,等等。显然,最少需要 2 个钱币才能
凑成 15 元。
你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成
某个给出的钱数。
【要求】
【数据输入】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值 M(1 <= M
<= 2000,整数),接着的一行中,第一个整数 K(1 <= K <= 10)表示币种个数,随后是 K
个互不相同的钱币面值 Ki(1 <= Ki <= 1000)。输入 M=0 时结束。
【数据输出】每个测试用例输出一行,即凑成钱数值 M 最少需要的钱币个数。如果凑钱失
败,输出“Impossible” 。你可以假设,每种待凑钱币的数量是无限多的。
【样例输入】
15
6 2 5 10 20 50 100
1
1 2
0
【样例输出】
2
Impossible
示例代码:
这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例
如:给定了 6 种钱币面值为 2、5、10、20、50、100,用来凑 15 元,可以用 5 个 2 元、1
个 5 元,或者 3 个 5 元,或者 1 个 5 元、1 个 10 元,等等。显然,最少需要 2 个钱币才能
凑成 15 元。
你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成
某个给出的钱数。
【要求】
【数据输入】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值 M(1 <= M
<= 2000,整数),接着的一行中,第一个整数 K(1 <= K <= 10)表示币种个数,随后是 K
个互不相同的钱币面值 Ki(1 <= Ki <= 1000)。输入 M=0 时结束。
【数据输出】每个测试用例输出一行,即凑成钱数值 M 最少需要的钱币个数。如果凑钱失
败,输出“Impossible” 。你可以假设,每种待凑钱币的数量是无限多的。
【样例输入】
15
6 2 5 10 20 50 100
1
1 2
0
【样例输出】
2
Impossible
示例代码:
#include "stdafx.h" #include <iostream> #include <vector> #include<fstream> # define MAX 100 using namespace std; int min(int i, vector<int> v, int less[100]){ int lessNum = MAX; for (int t = 0; t<(int)v.size(); t++){ if (i - v[t] >= 0){ if (lessNum>1 + less[i - v[t]]){ lessNum = 1 + less[i - v[t]]; } } } return lessNum; } void main(){ int less[100], item, num; int pos = 0; fstream file; file.open("data.txt", ios::in); if (!file) cout << "file not founded" << endl; if (!file.eof()){ file >> item >> num; } vector<int> v(num); while (!file.eof())//是否到文件结尾 { file >>v[pos]; pos++; if (pos >= num) break; } file.close(); less[0] = 0; for (int i = 1; i <= item; i++){ less[i] = min(i,v,less); } cout << less[item]; }
相关文章推荐
- Android sendevent/getevent 用法
- Android sendevent/getevent 用法
- NuttX 构建系统
- android之R cannot be resolved to a variable
- mac git
- 双向链表
- 使用Calendar类得到一年中的二月有多少天
- LeetCode Maximum Depth of Binary Tree
- String类
- 拍照、录视频
- python的with语句
- ajax post demo
- 第2周项目3体验复杂度
- java__集合03
- 日期类
- YARN源码分析(四)-----Journalnode
- Uva-1220 - Party at Hali-Bula
- 15级新同学风面会
- Android中的动画资源
- java算法系列之一:堆排序算法