买书最优
一、題目要求
書店針對《哈利波特》系列書籍進行促銷活動,一共5卷,用編號0、1、2、3、4表示,單獨一卷售價8元, 具體折扣如下所示:
?????????????????????????????? 本數????????????????? 折扣
?????????????????????????????????2???????? ???????????5%
???????????????????????????????? 3?????? ?????????????10%
???????????????????????????????? 4???? ???????????????20%
???????????????????????????????? 5?? ?????????????????25%
根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應一個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5%的折扣,另外一本卷一則不享受優惠。
設計算法能夠計算出讀者購買一批書的最低價格。
二、設計思路
本題其實并不復雜,只要找到了10本書內各種本術所對應的最小折扣方法即可,最后找到折扣方法:
?????????????????????????????所買本數?????????????????購買方法
???????????????????????????????? 1?????????????????????????? 1
???????????????????????????????? 2?????????????????????????? 2
???????????????????????????????? 3???????????????????????????3
?????????????????????????????????4???????????????????????????4
???????????????????????????????? 5?????????????????????????? 5
?????????????????????????????????6?????????????????????????? 1+5
???????????????????????????????? 7?????????????????????????? 2+5
???????????????????????????????? 8?????????????????????????? 4+4
???????????????????????????????? 9?????????????????????????? 4+5
???????????????????????????????? 10?????????????????????????5+5
三、實驗代碼:
package 折扣算法;import java.util.Scanner;public class Zhekou {public static double jisuan(int benshu){double jiage = 0;int shiwei=benshu/10;int gewei=benshu%10;if(gewei>0&&gewei<10){if(gewei==1) jiage=8;if(gewei==2) jiage=(8*2*0.95);if(gewei==3) jiage=(8*3*0.9);if(gewei==4) jiage=(8*4*0.8);if(gewei==5) jiage=(8*5*0.75);if(gewei==6) jiage=8+(8*5*0.75);if(gewei==7) jiage=(8*2*0.95)+(8*5*0.75);if(gewei==8) jiage=(8*4*0.8)+(8*4*0.8);if(gewei==9) jiage=(8*5*0.75)+(8*4*0.8);}jiage=jiage+(8*5*0.75)*2*shiwei;if(gewei>0&&gewei<=5)System.out.println("購買方案是買 "+shiwei+" 個十本和 "+gewei+" 本");else if(gewei!=8)System.out.println("購買方案是買"+shiwei+"個十本和 "+(gewei-5)+" 本和 5 本");else System.out.println("購買方案是買"+shiwei+"個十本和 4 本和 4 本");return jiage;}public static void main(String args[]){System.out.println("請輸入要購買的本數");Scanner scr=new Scanner(System.in);int benshu=scr.nextInt();double jiage=jisuan(benshu);System.out.println("最低購買價格是"+jiage);}}四、實驗截圖:
五、個人總結
其實這個算法的設計花了一半的時間在紙上,而敲代碼反而很快了,體現了算法思想的重要性。
轉載于:https://www.cnblogs.com/hehejeson/articles/5558172.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
- 上一篇: 寻找小水王
- 下一篇: 梦断代码阅读笔记02