当前位置: 首页 > news >正文

网站建设go关于做网站的书籍

网站建设go,关于做网站的书籍,孝感 网站建设,哪些网站有友情链接模拟商场优惠打折 题目描述 模拟商场优惠打折,有三种优惠券可以用,满减券、打折券和无门槛券。 满减券:满100减10,满200减20,满300减30,满400减40,以此类推不限制使用; 打折券&…

模拟商场优惠打折

题目描述

模拟商场优惠打折,有三种优惠券可以用,满减券、打折券和无门槛券。
满减券:满100减10,满200减20,满300减30,满400减40,以此类推不限制使用;
打折券:固定折扣92折,且打折之后向下取整,每次购物只能用1次;
无门槛券:一张券减5元,没有使用限制。
每个人结账使用优惠券时有以下限制:

  1. 每人每次只能用两种优惠券,并且同一种优惠券必须一次用完,不能跟别的穿插使用(比如用一张满减,再用一张打折,再用一张满减,这种顺序不行)。
  2. 求不同使用顺序下每个人用完券之后得到的最低价格和对应使用优惠券的总数;如果两种顺序得到的价格一样低,就取使用优惠券数量较少的那个。

输入描述

第一行三个数字m,n,k,分别表示每个人可以使用的满减券、打折券和无门槛券的数量;
第二行一个数字x, 表示有几个人购物;
后面x行数字,依次表示是这几个人打折之前的商品总价。

输出描述

输出每个人使用券之后的最低价格和对应使用优惠券的数量

用例

输入3 2 5
3
100
200
400
输出65 6
135 8
275 8
说明

输入:

第一行三个数字m,n,k,分别表示每个人可以使用的满减券、打折券和无门槛券的数量。

输出:

第一个人使用 1 张满减券和5张无门槛券价格最低。(100-10=90, 90-5*5=65)

第二个人使用 3 张满减券和5张无门槛券价格最低。(200-20-10-10=160, 160 – 5*5 = 135)

第二个人使用 3 张满减券和5张无门槛券价格最低。(400-40-30-30=300, 300 – 5*5=275)

源码和解析
解析:

这个题其是暴力求解即可,因为只有三种券且每次只能使用2种。因此按使用顺序不同可以得到6种计算方式。分别对用户输入的价格进行每种方式求解后取最优值即可。
思考?如果券种类多一点,每次使用的数量多一点。那么组合方式就很难,暴力破解就无法了。

示例代码:

import java.util.Scanner;public class T36 {static int mjq;static int dzq;static int wmkq;static class Group {int price;// 打折后价格int num;// 优惠券使用熟练}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();mjq = Integer.parseInt(input.split(" ")[0]);// 满减券数量 100减10 200减20// 300减30dzq = Integer.parseInt(input.split(" ")[1]); // 打折券数量 92折 向下取整wmkq = Integer.parseInt(input.split(" ")[2]); // 无门槛券 减5元 价格>=0int nums = Integer.parseInt(scanner.nextLine());for (int i = 0; i < nums; i++) {int price = Integer.parseInt(scanner.nextLine());Group g = getMinPrice(price);System.out.println(g.price + " " + g.num);}}public static Group getMinPrice(int price) {String ways[] = { "MD", "MY", "DM", "DY", "YM", "YD" };Group group = new Group();group.price = price;group.num = dzq + mjq + wmkq;for (String way : ways) {Group g = count(way, price);if (g.price < group.price) {group.price = g.price;group.num = g.num;} else if (g.price == group.price) {if (g.num < group.num) {group.num = g.num;}}}return group;}public static Group count(String way, int price) {// Map<Integer, Integer> map = new HashMap<Integer, Integer>(); // 价格// 和数量Group group = new Group();int mjCount = 0;// 满减券使用数量int wmqCount = 0;// 优惠券使用数量switch (way) {case "MD":// 先满减 再打折while (mjCount < mjq && price >= 100) {int num = (int) (price / 100) * 10;// System.out.println(price+"_"+num);price -= num;mjCount++;}// System.out.println("满减后的价格" + price);price = (int) (price * 0.92);// System.out.println("打折后的价格" + price);group.price = price;group.num = mjCount + 1;break;case "MY":// 先满减 无门槛券while (mjCount < mjq && price >= 100) {int num = (int) (price / 100) * 10;// System.out.println(price+"_"+num);price -= num;mjCount++;}// System.out.println("满减后的价格" + price);while (price > 0 && wmqCount < wmkq) {price -= 5;price = price < 0 ? 0 : price;wmqCount++;}group.price = price;group.num = mjCount + wmqCount;// System.out.println("无门槛后的价格" + price);break;case "DM":// 先打折再满减price = (int) (price * 0.92);// 先满减 再打折// System.out.println("打折后的价格" + price);while (mjCount < mjq && price >= 100) {int num = (int) (price / 100) * 10;// System.out.println(price+"_"+num);price -= num;mjCount++;}// System.out.println("满减后的价格" + price);group.price = price;group.num = mjCount + 1;break;case "DY":// 先打折 再使用无门槛券price = (int) (price * 0.92);// System.out.println("打折后的价格" + price);while (price > 0 && wmqCount < wmkq) {price -= 5;price = price < 0 ? 0 : price;wmqCount++;}// System.out.println("无门槛券后的价格" + price);group.price = price;group.num = wmqCount + 1;break;case "YM":// 先使用无门槛券 再满减while (price > 0 && wmqCount < wmkq) {price -= 5;wmqCount++;price = price < 0 ? 0 : price;}// System.out.println("无门槛券后的价格" + price);while (mjCount < mjq && price >= 100) {int num = (int) (price / 100) * 10;price -= num;mjCount++;}// System.out.println("满减后的价格" + price);group.price = price;group.num = mjCount + wmqCount;break;case "YD":// 先使用 无门槛券 再使用打折while (price > 0 && wmqCount < wmkq) {price -= 5;wmqCount++;price = price < 0 ? 0 : price;}// System.out.println("无门槛券后的价格" + price);price = (int) (price * 0.92);// System.out.println("打折后的价格" + price);group.price = price;group.num = wmqCount + 1;default:break;}return group;}
}

上述代码及运行示意图:
在这里插入图片描述

http://www.yayakq.cn/news/144734/

相关文章:

  • 多媒体设计与制作毕业设计大公司需要seo是什么职业
  • 网站结构逻辑结构自己怎么做入网站回收书报
  • 建站之星网站模板梁山网站建设多少钱
  • 东胜网站制作邢台市路桥建设公司网站
  • 网页设计与网站建设实战大全找私人做网站
  • c2c模式的网站有哪些网站建设需要提供哪些资料
  • 包头北京网站建设常见的网站名称有哪些
  • 个人视频网站应该怎么做erp软件多少钱
  • 网站体验分析定南网站建设
  • html展示网站源代码邢台网站建设网络公司
  • 广东免费网络推广软件随州网站优化
  • 微信网站开发 js框架学动漫制作去哪个学校
  • 东莞网站建设地点优化重庆网站建设公司夹夹虫专业
  • 学做网站有没有前途做羞羞事的网站有哪些
  • 网站的后台是开发做的平面图设计软件app
  • 专业的网站制作关键词优化案例
  • 万网网站空间服务范围电子商务网站建设与维护致谢词
  • h5手机模板网站印章在线生成器
  • 广州网站建设求职简历wordpress本站主题
  • 湖南营销型网站建设公司排名wordpress 一直崩溃
  • 营销网站制作要素erp软件公司有哪些
  • 广州微信网站设计推荐几个设计网站
  • wordpress+爱情主题成都网站营销seo电话
  • 网站建设套餐报域名分析网站
  • 做网站公司赚不赚钱张槎网站建设制作
  • 高端设计网站建设汽配网站建设成本
  • 井陉矿区网站建设企业网银怎么登录
  • 温州网站排名优化公司哪家好建设银行有没有全球门户网站
  • 网站评估 源码网络推广工作室
  • 简述营销型企业网站建设的内容建筑网名