買書問題

一、題目及要求ios

書店針對《哈利波特》系列書籍進行促銷活動,一共5卷,用編號0、一、二、三、4表示,單獨一卷售價8元, 具體折扣以下所示:

                              

本數 折扣
2 5%
3 10%
4 20%
5 25%

 

根據購買的卷數以及本數,會對應不一樣折扣規則狀況。單數一本書只會對應一個折扣規則,例如購買了兩本卷1,一本卷2,則能夠享受5%的折扣,另一本卷一則不享受優惠。設計算法可以計算出讀者購買一批書的最低價格。
二、實驗思路
經過對買書優惠找規律可得:
當買的數量爲1-5本時,確定買不一樣的最便宜
當買的數量爲6時最優爲,買一套+任意一本
當買的數量爲7時最優爲:買一套+任意不一樣的兩本
當買的數量爲8時最優爲:不一樣的四本各買兩本
當買的數量爲9時最優爲:買一套+任意不一樣的四本
當買的數量爲10時最優爲:買兩套
因此任意買的書的數量均可以除以時求餘數,商部分則按兩套來算,餘部分則按1-10之間選擇最優。
三、實驗代碼
 
 1 #include<iostream>
 2 using namespace std;
 3 
 4 
 5 int main()
 6 {
 7     int x, a, b;//x爲買書的數量
 8     double num,num1;
 9     cout << "請輸入書本數:";
10     cin >> x;
11     a = x / 10;
12     b = x % 10;
13     num1 = 10 * 8 * a  * (1 - 0.25);
14     if (b == 0)
15     {
16         num = num1;
17     }
18     else if (b == 1)
19     {
20         num = num1 + 8;
21     }
22     else if (b == 2)
23     {
24         num = num1 + 2 * 8 *(1-0.05);
25     }
26     else if (b == 3)
27     {
28         num = num1 + 3 * 8*(1 - 0.1);
29     }
30     else if (b == 4)
31     {
32         num = num1 + 4 * 8*(1 - 0.2);
33     }
34     else if (b == 5)
35     {
36         num = num1 + 5 * 8*(1 - 0.25);
37     }
38     else if (b == 6)
39     {
40         num = num1 +30+ 8;
41     }
42     else if (b == 7)
43     {
44         num = num1+30 + 2 * 8*(1 - 0.05);
45     }
46     else if (b == 8)
47     {
48         num = num1 + 8 * 8 * (1-0.2);
49     }
50     else if (b == 9)
51     {
52         num = num1 + 30 + 4* 8 * (1-0.2);
53     }
54     cout << "讀者購買這批書的最低價格爲:" << num<<endl;
55     return 0;
56 }
View Code

四、實驗截圖
算法

五、時間記錄日誌(單位:h):編程

 

日期 開始時間 結束時間 中斷時間(min) 淨時間(min) 活動 備註
星期一 14:00 15:50 10(課間) 100 聽課 軟件工程
星期三 15:00 17:00 10(休息) 120 看書 人月神話
星期四 14:00 15:50 10(課間) 100 上機 買書問題
星期五 18:30 19:10 10(休息) 30 編程發博客 買書問題
相關文章
相關標籤/搜索