买书问题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
01背包问题算法的C++实现。
knapsack.cpp+knapsack.h
2024/4/22 16:29:44 1KB 01背包问题 算法 C++ 源码
1
01背包问题是一个很经典的问题,在这里我用回溯法解决。
希望大家一起来探讨呀!
2023/12/29 13:35:55 166KB 01背包问题的回溯法解决
1
0-1背包问题测试数据,内含多组测试数据,物品的价值量及其重量,复制粘贴即可使用
2023/12/25 3:42:06 78KB 01背包问题
1
东北大学算法分析与设计课程实验内容+可用代码+实验报告,java开发,分治法解决格雷码问题,动态规划解决找零钱问题,回溯法解决01背包问题
2023/12/17 1:01:52 1.33MB 算法分析与设 java 分治法 回溯法
1
用动态规划、分支限界、回溯解决01背包、批处理作业调度问题
2023/10/6 0:35:17 2.07MB 动态规划
1
运用贪心策略解决01背包问题voidbeibao(int*w,int*v,int*x,intn,int*C){ inti,j,temp; for(i=0;in; w=newint(n);//动态分配内存 v=newint(n); x=newint(n); coutC; coutw[i]; coutv[i]; beibao(w,v,x,n,&C); cout<<"应用贪心策略装入背包的物品的重量分别为:"<<endl; for(i=0;i<n-1;i++) if(x[i]==1) cout<<""<<w[i]; cout<<""<<C<<"/"<<w[i]<<endl;}
2023/8/11 22:38:39 901B 贪心法01背包问题
1
本程序是用于实现01背包问题的QGA算法,用matlab实现。
2023/7/19 18:10:45 10KB QGA matlab
1
01背包研究的很多,在研究过程当中我们可以用到一些测试数据,这里就是提供的测试数据
2023/7/2 1:46:56 4KB 背包问题、测试数据
1
典型遗传算法(SGA)解01背包下场的python代码实现,阐发如下:1.付与典型的二进制编码,遴选算子为轮盘赌遴选,交织算子为两点交织,变异算子为反转(单点)变异2.可调的参数为:gen,pc,pm,popsize,n,w,c,W,M3.两种解码方式:带责罚项以及不带责罚项
2023/4/20 13:17:11 5KB SGA 遗传算法 背包问题
1
共 15 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡