问题:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
解决思路:
6本时:1本+5本最优;
7本时:2本+5本最优;
8本时:4本+4本最优;
9本时:4本+5本最优。
买10本时选择“5+5”,优惠价格为20;当购买价格超过10本时,根据规律发现,选择10本十本买,最后根据1-10的本数选择最优惠方法就能求得最为优惠价格。
源代码:
1 #include<iostream> 2 using namespace std; 3 4 void TheCheapestPrice(int number) 5 { 6 int count = 0; 7 double price; //10本以内的优惠价格 8 double sum; 9 count = number / 10; 10 11 switch (number % 10) 12 { 13 case 0:price = 0; break; 14 case 1:price = 0; break; 15 case 2:price = 0.8; break; 16 case 3:price = 2.4; break; 17 case 4:price = 6.4; break; 18 case 5:price = 10; break; 19 case 6:price = 10; break; 20 case 7:price = 10.8; break; 21 case 8:price = 12.8; break; 22 case 9:price = 16.4; break; 23 } 24 25 sum = number * 8 - count * 20 - price;//总价格减去优惠价格 26 cout << "最低价格为: " << sum<<endl; 27 } 28 29 int main() 30 { 31 int Book_Num = 0; 32 cout << "请输入需要购买的书籍数量: "; 33 cin >> Book_Num; 34 TheCheapestPrice(Book_Num); 35 return 0; 36 }
结果截图: