1 2 5 10 20 --> 800
用1元 2元 5元 10元 20元的钞票凑成800元的方法种数计算,使用了动态规划。
结果没打出来,只是保留在函数里各个vector中,调试可看所有结果。
优点:快
缺点:占空间占内存
耗时时间测试:
和为200:0.0022153191s
和为800:0.025958383s
和为1600:0.062776931s
和为3200:0.18964779s
下面是详细代码,能正常运行算出结果,改进空间很大,只列了思路。
算法为王,C写的O(n2)函数再快也不如R写的O(nlogn)函数。
void CMFCTestDlg::OnBnClickedBegin()
{
UpdateData(TRUE);
LARGE_INTEGER beginTime;
QueryPerformanceCounter(&beginTime); std::vector<int> vec_1_2(m_nTotal+, -);
for(int i=; i<=m_nTotal; i++)
{
vec_1_2[i] = +i/; // 使用1元 2元纸币组合成 0到m_nTotal 元的方法数
} std::vector<int> vec_1_2_5(vec_1_2.begin(), vec_1_2.end());
for(int i=; i<=m_nTotal; i++)
{
for(int j=; j<=i/; j++)
{
vec_1_2_5[i] += vec_1_2[i-j*]; // 使用1元 2元 5元纸币组合成 0到m_nTotal 元的方法数
}
} std::vector<int> vec_1_2_5_10(vec_1_2_5.begin(), vec_1_2_5.end());
for(int i=; i<=m_nTotal; i++)
{
for(int j=; j<=i/; j++)
{
vec_1_2_5_10[i] += vec_1_2_5[i-j*]; // 使用1元 2元 5元 10元纸币组合成 0到m_nTotal 元的方法数
}
} std::vector<int> vec_1_2_5_10_20(vec_1_2_5_10.begin(), vec_1_2_5_10.end());
for(int i=; i<=m_nTotal; i++)
{
for(int j=; j<=i/; j++)
{
vec_1_2_5_10_20[i] += vec_1_2_5_10[i-j*]; // 使用1元 2元 5元 10元 20元纸币组合成 0到m_nTotal 元的方法数
}
}
//.... 如果有50元 100元等更多要求,在此处依次添加即可,很容易扩展
LARGE_INTEGER endTime;
QueryPerformanceCounter(&endTime); LARGE_INTEGER frequency;
QueryPerformanceFrequency(&frequency); float fTime = (endTime.QuadPart-beginTime.QuadPart)/(float)(frequency.QuadPart);
fTime = ;
}
1 2 5 10 20 --> 800的更多相关文章
- 背水一战 Windows 10 (20) - 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换
[源码下载] 背水一战 Windows 10 (20) - 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换 作者:webabcd 介 ...
- (转自http://www.blogjava.net/moxie/archive/2006/10/20/76375.html)WebWork深入浅出
(转自http://www.blogjava.net/moxie/archive/2006/10/20/76375.html) WebWork深入浅出 本文发表于<开源大本营> 作者:钱安 ...
- Scrum会议10.20
Scrum会议 组名称:好好学习 项目名称:记账本 参会成员:林莉(Master)胡丽娜 汪东涵 宫丽君 时间:2016.10.20 已完成内容: 1.理解项目和代码. 2.讨论新功能. 计划完成 ...
- 查询数据库:models.Books.objects.all()[10: 20]与models.Books.objects.filter(id__gt=10, id__lt=20).values() 的区别
1. models.Books.objects.all()[10: 20] (10:20 之间是冒号,不是逗号.)查出的是 QuerySet对象,如需进行操作,得进一步进行剥皮. 查询代码: 查询结 ...
- OSC Source Code Innovation Salon(2018.10.20)
时间:2018.10.20地点:北京 朝阳 浦项中心B座2层
- 第8次Scrum会议(10/20)【欢迎来怼】
一.小组信息 队名:欢迎来怼 小组成员 队长:田继平 成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华 小组照片 二.开会信息 时间:2017/10/20 17:20~17:45,总计25min. 地点 ...
- Daily Scrum 10.20
今天进行了团队第一次scrum meeting,在这次会议中,我们针对NABC模型以及开发前期的工作进行了探讨. 第一次会议 主要内容如下: 为了大家接下来几周的开发效率,需要共同商量团队的一些规则 ...
- 2018.10.20 XMYZ Day1总结
上周的忘写了……题目没有作者…… T1.backpack 期望得分100,实际得分100. 感觉我自己真是不如以前了……以前做这种题都是秒掉的,现在怎么想了10分钟啊…… 因为物品的体积和价值都非常小 ...
- Noip模拟81 2021.10.20
T1 语言 比较简单的题,然后就瞎写了,所以考场上就我一个写了线段树的,所以我的常数.... 所以就枚举动词的位置,找前面后面有没有出现$4$即可 1 #include<bits/stdc++. ...
随机推荐
- UIPasteboard 粘贴板
UIPasteboard *pasteboard = pasteboard.string = self.label.text;
- My SQL和LINQ 实现ROW_NUMBER() OVER以及Fatal error encountered during command execution
Oracle 和SQL server都有ROW_NUMBER() OVER这个功能函数,主要用于分组排序,而MySQL 却没有 SELECT * FROM (SELECT ROW_NUMBER() O ...
- 【codevs】2776寻找代表元
题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号.广州二中苏元实验学校一共有m个人,分别用1到m编号.每个人可以参加一个或多个社团,也可以不参加任何社团.每个社团 ...
- QF——关于iOS的强引用,弱引用及strong,retain,copy,weak,assignd的关系
强引用和弱引用: 我们已经知道OC中的内存管理是通过“引用计数器”来实现的.一个对象的生命周期取决于它是否还被其他对象引用(是否retainCount=0).但在有些情况下,我们并不希望对象的销毁时间 ...
- JS的匿名函数和递归应用
今天有项目需要用到JS的递归,开始按照php的实现方法,发现不行,后来只能使用arguments.callee. 简单的例子,如下 var act = 'if(num <= 1){return ...
- 深度解析Linux通过日志反查入侵
有一个朋友的服务器发现有入侵的痕迹后来处理解决但是由于对方把日志都清理了无疑给排查工作增加了许多难度.刚好手里有些资料我就整理整理贴出来分享一下.其实日志的作用是非常大的.学会使用通过日志来排查解决我 ...
- 【java】静态方法声明与调用习题
public class dengd { static int getTt(int table[]) { for(int b=0; b<table.length;b++) { System.ou ...
- SQL Server 向堆表中插入数据的过程
堆表中 IAM 记录着的数据页,表的各个数据页之间没有联系.也就是说一个页面它不会知道自己的前一页是谁,也不知道自己的后一页是谁. 插入数据时先找到IAM页,再由pfs(page free spac ...
- 看大数据时代下的IT架构(1)业界消息队列对比
一.MQ(Message Queue) 即 消息队列,一般用于应用系统解耦.消息异步分发,能够提高系统吞吐量.MQ的产品有很多,有开源的,也有闭源,比如ZeroMQ.RabbitMQ. ActiveM ...
- HDU 5738 Eureka(极角排序)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5738 [题目大意] 给出平面中一些点,在同一直线的点可以划分为一个集合,问可以组成多少包含元素不少 ...