最少硬币问题
2015-11-18 11:50
197 查看
#include "iostream" #include "algorithm" #include "fstream" using namespace std; #define INF 100000 /* f[j]表示所找钱数为j,需要的最少硬币数 f[j] = min{f[j], f[j-ti]+1} */ int f[100]; int t[100]; //面额 int num[100]; //对应面额的硬币数量 int min(int a, int b) { return a<b? a:b; } int solve(int n, int m) { for(int j=1; j<=m; j++) f[j] = INF; for(int i=1; i<=n; i++) //硬币种数 for(int k=1; k<=num[i]; k++) //相应硬币个数 for(int j=m; j>=t[i]; j--) //要找的钱 f[j] = min(f[j], f[j-t[i]]+1); return f[m]; } int main() { ifstream fin("coins.txt"); int n; fin >> n; cout << "硬币种数为:" << n; cout << "\n各种硬币面值及对应数量分别为:\n"; for(int i=1; i<=n; i++) { fin >> t[i] >> num[i]; cout << t[i] << " " << num[i] << endl; } int m; fin >> m; cout << "要找的钱数为:" << m << endl; cout << "最少硬币数为:" << solve(n, m) << endl; fin.close(); return 0; }
相关文章推荐
- Android开发中常用adb命令
- 移动联通基站信息
- linux检查磁盘空间已满问题
- makefile:2: *** 遗漏分隔符 。 停止
- android根据屏幕宽度,按比例缩放图片
- Eclipse中设置keystone提示:Keystore was tampered with, or password was incorrect
- Win32Project编译报错error C1853:
- ASP.NET跨平台
- Win2D 官方文章系列翻译 - 处理设备丢失
- popupwindow中spinner程序出错问题
- 程序架构探讨—001 查询语句中多段select语句的方案
- IOS学习之__FUNCTION__的作用
- anrom SQL 开发
- 好文推荐:iOS开发中的Git流程
- VIM基本操作(本人还不熟悉的~)
- 16TB以后磁盘挂载方法
- 第一章百宝云基础语法新手教程第一节变量与常量
- sun.net.www.protocol.http.HttpURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection
- UI自动化测试框架之Selenium关键字驱动
- 优秀源码阅读:Swift网络库Alamofire