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

邢台网站建设平台/怎样和政府交换友链

邢台网站建设平台,怎样和政府交换友链,安卓手机下载app的软件,网站网页区别是什么意思模拟商场优惠打折 题目描述 模拟商场优惠打折,有三种优惠券可以用,满减券、打折券和无门槛券。 满减券:满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.jmfq.cn/news/4988647.html

相关文章:

  • 玉溪做网站建设的公司/竞价广告是怎么推广的
  • 网站微信付款调用/楚雄百度推广电话
  • 专业做公司宣传网站的/关键词排名点击软件怎样
  • 佛山专业网站建设/重庆网站制作公司
  • 南阳市做网站/信息互联网推广
  • 如何低成本做网站推广/北京seo关键词排名优化
  • wordpress 定时/什么是网站seo
  • 哪个网站可以做片头/网站怎么做优化排名
  • 网站建设如何网络销售/搜索引擎培训班
  • 网页广告素材/黑帽seo优化
  • 网站建设价位/广州谷歌推广
  • 桂林有哪些做网站的电话/百度一下下载安装
  • 商标注册需要多久/深圳seo关键词优化
  • 做网站后付款/青海seo技术培训
  • 网站内链符号/企业网站源码
  • DW做网站入门步骤教学/聊石家庄seo
  • 安平县做网站的有哪些/北京建站公司
  • 制作论坛做网站/网址大全百度
  • 青岛模板做网站/天津网站策划
  • 怎么做网站可手机看/全国人大常委会
  • 美丽寮步网站建设价钱/创建网站步骤
  • 公众号建网站/好用的seo软件
  • 上海营销型网站建设公司/seo网络推广机构
  • 做网站需要前置审批/网站seo 优化
  • 淘宝现在不能发布网站建设/公司业务推广
  • 17网站一起做网店怎么下单/百度关键词搜索怎么弄
  • 重庆工厂网站建设/成都网络推广运营公司
  • 网站开发报价说明/站长工具友链检测
  • 网站正在建设中 公告/百度推广seo优化
  • 龙溪网站建设哪家便宜/营销广告文案