买书问题dp实现题目:买书有一书店引进了一套书,共有3卷,每卷书定价是60元,书店为了搞促销,推出一个活动,活动如下:如果单独购买其中一卷,那么可以打9.5折。
如果同时购买两卷不同的,那么可以打9折。
如果同时购买三卷不同的,那么可以打8.5折。
如果小明希望购买第1卷x本,第2卷y本,第3卷z本,那么至少需要多少钱呢?(x、y、z为三个已知整数)。
1、过程为一次一次的购买,每一次购买也许只买一本(这有三种方案),或者买两本(这也有三种方案),或者三本一起买(这有一种方案),最后直到买完所有需要的书。
2、最后一步我必然会在7种购买方案中选择一种,因此我要在7种购买方案中选择一个最佳情况。
3、子问题是,我选择了某个方案后,如何使得购买剩余的书能用最少的钱?并且这个选择不会使得剩余的书为负数。
母问题和子问题都是给定三卷书的购买量,求最少需要用的钱,所以有"子问题重叠",问题中三个购买量设置为参数,分别为i、j、k。
4、的确符合。
5、边界是一次购买就可以买完所有的书,处理方式请读者自己考虑。
6、每次选择最多有7种方案,并且不会同时实施其中多种,因此方案的选择互不影响,所以有"子问题独立"。
7、我可以用minMoney[i][j][k]来保存购买第1卷i本,第2卷j本,第3卷k本时所需的最少金钱。
8、共有x*y*z个问题,每个问题面对7种选择,时间为:O(x*y*z*7)=O(x*y*z)。
9、用函数MinMoney(i,j,k)来表示购买第1卷i本,第2卷j本,第3卷k本时所需的最少金钱,那么有:MinMoney(i,j,k)=min(s1,s2,s3,s4,s5,s6,s7),其中s1,s2,s3,s4,s5,s6,s7分别为对应的7种方案使用的最少金钱:s1=60*0.95+MinMoney(i-1,j,k)s2=60*0.95+MinMoney(i,j-1,k)s3=60*0.95+MinMoney(i,j,k-1)s4=(60+60)*0.9+MinMoney(i-1,j-1,k)s5=(60+60)*0.9+MinMoney(i-1,j,k-1)s6=(60+60)*0.9+MinMoney(i-1,j,k-1)s7=(60+60+60)*0.85+MinMoney(i-1,j-1,k-1)
2024/5/4 19:26:25 3KB 动态规划 dp 动归 买书问题
1
利用jsencrypt.min.js库的加解密转换方法,新增base64转换,实现长字符串也可加解密不报错。
encryptLong2(),decryptLong2()
2024/4/14 16:47:10 66KB js es6
1
web开发,是个好东西,希望大家能够多次下载
2024/3/24 1:12:28 727KB web开发
1
解决java中echarts关系图中如何引用dataTool:UncaughtTypeError:Cannotreadproperty'gexf'ofundefined
2024/3/19 10:17:32 4KB dataTool.min echarts插件
1
该压缩包包含原理图+pcb+封装库,下载即可用,可用于飞思智能车驱动板(光电,四轮,三轮通用),两路IR2104S驱动电路(负载回路min=4.5mm)实测飞思电池7V4满占空比跑无发热。
带光耦隔离,有效保护控制芯片。
技术交流q767574818
2024/3/15 16:01:44 2.18MB IR2104S
1
很久前写了关于把html转成图片的一个例子,最近有出了新的问题。
利用html2canvas.js文件把html转成base64位的图片是没什么问题的,但也不是绝对的,比如这时候不能碰见svg这个鬼,html2canvas碰见svg就不好用了,svg的元素会不能出现在生成的图片中。
这时候我看到了html2canvas.svg.min.js这个文件,奈何我没找到正确的使用方式。
所以选择了canvg.js这个goole发明的方法,原理是把svg装成canvas,再利用canvas的toDataURL,转成base64位的图片形式
2024/3/14 21:04:03 8KB rgbcolor.js
1
是用JavaScript编写的模块化GIS地理空间引擎,用于空间分析的JavaScript库。
它包括传统的空间操作,用于创建GeoJSON数据的辅助函数,以及数据分类、空间计算和统计工具。
支持等值线、等值面、求两线相交交点等功能计算交点的方法见博客:https://blog.csdn.net/xxloveivy/article/details/85045764
2024/3/8 10:22:38 557KB turf GIS 空间计算 GIS插件
1
jquery-1.8.3.js、jquery-1.8.3.min.js【官方jquery包js】
2024/2/25 20:37:52 110KB jquery js
1
select2.min.js
2024/2/20 14:28:46 65KB js
1
使用c++实现的顺序表:多文件编程,层次清晰,函数有注释SeqList();//构造函数,存储的元素个数设为0boolsetLength(size_tlength);//设置已经存储的元素个数booladdElement(ElemTypeelement);//把某个元素添加到顺序表末尾booladdElement(ElemTypeelement,size_tn);//插入一个元素,使其成为第n个元素,其余元素后移booldelElement();//删除所有的元素booldelElement(size_tn);//删除第n个元素booldelElement(stringelementDetailType,stringelementDetail);//通过某个元素细节找到元素,把这个元素删除boolreplaceElement(ElemTypeelement,size_tn);//使用一个元素,替换掉第n个元素boolswapElement(size_tn1,size_tn2);//把第n1个元素和第n2个元素交换ElemType*getElement();//得到数组头的指针ElemType*getElement(size_tn);//得到第n个元素的指针size_tgetLength();//得到存储的元素个数size_tgetMaxSize();//得到顺序表容量boolshowElementDetail();//输出所有的元素细节boolshowElementDetail(size_tn);//输出第n个元素的细节boolshowElementDetail(stringelementDetailType,stringelementDetail);//通过某个元素细节找到元素,输出元素所有细节size_tfindElement(stringelementDetailType,stringelementDetail);//通过某个元素细节找到元素位置staticintinputAInt(intmin=0,intmax=9,intdefaultValue=-1);//从键盘读取,限制为一个min到max间的整数,非法情况返回defaultValuevoidstartControlLoop();//打开控制界面~SeqList();//析构函数
2024/2/19 19:14:08 50KB 数据结构 顺序表 c++ 代码
1
共 171 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡