求最低價格

2022-07-19 01:18:09 字數 2393 閱讀 4698

1、題目要求:

書店針對《哈利波特》系列書籍進行**活動,一共5卷,用編號0、1、2、3、4表示,單獨一捲售價8元, 具體折扣如下所示:

本數                    折扣

2                       5%

3                       10%

4                       20%

5                       25%

根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應乙個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5%的折扣,另外一本卷一則不享受優惠。設計演算法能夠計算出讀者購買一批書的最低**。

2、實現思路:

買書6~10本的時候,我對這些情況進行了窮舉,(由於折扣價總是比單買一本便宜,一下買四本比分別買兩本便宜……所以將2拆成1+1,4拆成3+1、2+2等情況不計)

總數購買數

計算總價

65+1

8*5*75%+8*1

38

4+28*4*80%+8*2*95%

40.8

3+38*3*90%+8*3*90%

43.2

75+2

8*5*75%+8*2*95%

45.2

4+38*4*80%+8*3*90%

47.2

8

5+38*5*75%+8*3*90%

51.6

4+48*4*80%+8*4*80%

51.2

95+4

8*5*75%+8*4*80%

55.6

4+4+1

8*4*80%+8*4*80%+8

59.2

由表觀察可得,除了買8本時,分為兩個4本計算是最便宜外,其他情況下都是先扣除 5本一套才最便宜。

同理,書的數量不斷增加,依舊是這樣。因此,只要將書五本一套這樣分開,除了餘下3本的情況需要另算外,其他情況都按照5本的優惠來算,就應當是最優惠。

輸入要買的本數,要判斷輸入的是否合法;

通過除以5 取餘數來判斷應該用哪一種購買方式(上課時老師說是除以10,經過程式設計實踐發現,除以5 比較簡單一點);

按照最便宜的方式進行計算,並輸出。

4.源**:

1

//王永維,2016,5,31

2 #include3

using

namespace

std;

4int

main()520

if (num%5!=3)21

28else

if (danben==1)//

多處來一本,按照原價計算

2932

else

if (danben==2)//

多處來兩本,按照5%折扣計算

3336

else

//多處來四本,按照20%折扣計算

3740 cout<

最大優惠方法是:\t買

"套全套, 再買

"<5

<

本不同的單本

"<

41 cout<

最優惠的總價是:\t

"<

43else

//多處來三本,少買一套,其餘的八本按照4+4的20%折扣算

4450

return

0;

51 }

5、執行結果:

測試資料  1231

測試資料  sd213

測試資料     1231.23

6、總結分析:

這次的實驗,程式並不難,只是方法太難想到了!!都以為會有什麼特殊的演算法或是規律,結果真的就是只窮舉計算一部分,然後分類計算。。。

程式設計沒有太多時間,乙個多小時就搞定了,但這篇部落格用了我乙個多小時。。。。

專案日誌:

2016 5、31            9:30-11:40       編寫程式,修改,發布       約130min

買書最低價格

1 題目 n書店針對 哈利波特 系列書籍進行 活動,一共5卷,用編號0 1 2 3 4表示,單獨一捲售價8元,具體折扣如下所示 本數 2,折扣5 本數 3,折扣10 本數4 折扣20 本數5,折扣25 根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應乙個折扣規則,例如購買了兩本卷1...

購書最低價

題目 書店針對 哈利波特 系列書籍進行 活動,一共5卷,用編號0 1 2 3 4表示,單獨一捲售價8元,具體折扣如下所示 本數 折扣 2 5 3 10 4 20 5 25 根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應乙個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5 的折...

Python 機票最低價格趨勢查詢

本文獲取攜程的最低 並繪製趨勢圖。遇到的問題 找到資訊頁面位址後,用python requests.post模擬瀏覽器獲取資料,結果status code返回400。查詢原因,4xx錯誤的原因都來自於客戶端,大多都是客戶端傳送的請求與server要求不符。所以從headers中逐個排除,最後發現是由...