买哈利波特书算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了买哈利波特书算法相关的知识,希望对你有一定的参考价值。
一:题目要求
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 |
折扣 |
2 |
5% |
3 |
10% |
4 |
20% |
5 |
25% |
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。
二:设计思想
首先买5本以内肯定是全部购买最优,然后计算买6-10本,找出最优的买书算法,最优算法为:
本数: 买书方法 优惠价格
6本 5+1 30+8=38
7本 5+2 30+15.2=45.2
8本 4+4 25.6*2=51.2
9本 5+4 30+25.6=55.6
10本 5+5 30*2=60
所以将需要买的书除以10,然后余数是几,就按几本的方法去买,最后相加就是最优的买书算法。
代码:
1 //买书最优算法 2 //2016.5.31 3 //纪烈翔 4 #include<iostream> 5 using namespace std; 6 7 int main() 8 { 9 int num,num_zheng,num_yu; 10 double price; 11 cout << "请输入买书的 数量:" << endl; 12 cin >> num; 13 num_zheng = num / 10; 14 num_yu = num % 10; 15 price = 60 * num_zheng; 16 switch (num_yu) 17 { 18 case 1: 19 price += 8; 20 break; 21 case 2: 22 price += 15.2; 23 break; 24 case 3: 25 price += 21.6; 26 break; 27 case 4: 28 price += 25.6; 29 break; 30 case 5: 31 price += 30; 32 break; 33 case 6: 34 price += 38;//5+1 35 break; 36 case 7: 37 price += 45.2;//5+2 38 break; 39 case 8: 40 price += 51.2;//4+4(特殊) 41 break; 42 case 9: 43 price += 55.6;//5+4 44 break; 45 } 46 num_zheng = num / 5; 47 num_yu = num % 5; 48 if (num_yu == 3&&num_zheng>0)//当除以5余数为3时是特殊情况 49 { 50 cout << "买书方法为:先整套购买" << num_zheng-1 << "套,再购买两套,每套随意4本不同的书。总共的价格为:" << price << endl; 51 } 52 else 53 { 54 cout << "买书方法为:先整套购买" << num_zheng << "套,再随意购"<<num_yu<<"本不同的书。总共的价格为:" << price << endl; 55 } 56 }
测试用例1:
测试用例2:
测试用例3:
测试用例4:
测试用例5:
实验总结:
这次的实验题目比较简单,外加老师在课上得指点,算出前10种情况后,后面的就都有规律了,总体来说还是比较简单的。
以上是关于买哈利波特书算法的主要内容,如果未能解决你的问题,请参考以下文章