天天看點

買書問題

1、題目及要求

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

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

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

2、實驗思路

通過對買書優惠找規律可得:

當買的數量為1-5本時,肯定買不同的最便宜

當買的數量為6時最優為,買一套+任意一本

當買的數量為7時最優為:買一套+任意不同的兩本

當買的數量為8時最優為:不同的四本各買兩本

當買的數量為9時最優為:買一套+任意不同的四本

當買的數量為10時最優為:買兩套

是以任意買的書的數量都可以除以時求餘數,商部分則按兩套來算,餘部分則按1-10之間選擇最優。

3、實驗代碼

買書問題
買書問題
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

4、實驗截圖

買書問題
買書問題
買書問題
買書問題

5、時間記錄日志(機關:h):

日期 開始時間 結束時間 中斷時間(min) 淨時間(min) 活動 備注
星期一 14:00 15:50 10(課間) 100 聽課 軟體工程
星期三 15:00 17:00 10(休息) 120 看書 人月神話
星期四 上機 買書問題
星期五 18:30 19:10 30 程式設計發部落格