结对开发 《哈利波特》买书最实惠方案设计
一、题目要求
本数 折扣
2 5%
3 10%
4 20%
5 25%
要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。(截止日期2015-4-15晚18:00)
二、设计思想
首先注意到小于5本书的时候,套用现有的优惠条件就是最优惠的方案;
如果书的数目大于10本,此时可以简化成买几个5本和一次6到10本这样的方案来达到最优惠的目的;
对6~10本进行简单的计算算出:
6本:分解成5+1本;总价为:30+8元
或分解成4+2本;总价为:25.6+15.2元
或分解成3+3本;总价为:21.6+21.6元
或分解成3+2+1
或分解成2+2+2等
可以看出5+1本最划算;
7本:分解成5+2本;总价为:30+15.2元
或分解成4+3本;总价为:21.6+25.6元
或分解成2+2+3
或分解成2+2+2+1等
可以看出5+2本最划算;
8本:分解成5+3本;总价为:30+21.6元
或分解成4+4本;总价为:25.6+25.6元
或分解成3+2+3
或分解成2+2+2+2等
可以看出4+4本最划算
9本:分解成5+4本;总价为:30+25.6元
或分解4+4+1
或分解成3+3+3
等
此时为最划算(只有这一种情况)
10本:买两个5本就行;
三、源代码
#include <iostream.h>
#include <conio.h>
int main(void)
{
int n;
cout<<"请输入要买几本书?"<<endl;
cin>>n;
if(n<6)
{
cout<<"请重新输入大于5的书目:";
cin>>n;
}
int a=n%5;
int b=n/5;
switch(a)
{
case 1:
cout<<"您先买"<<b*5<<"本书,"<<"再买1本书最划算"<<endl;
cout<<"总价为:"<<b*30+8<<"元";
break;
case 2:
cout<<"您先买"<<b*5<<"本书,"<<"再买2本书最划算"<<endl;
cout<<"总价为:"<<b*30+15.2<<"元";
break;
case 3:
cout<<"您先买"<<(b-1)*5<<"本书,"<<"再买两次4本书最划算"<<endl;
cout<<"总价为:"<<(b-1)*30+51.2<<"元";
break;
case 4:
cout<<"您先买"<<b*5<<"本书,"<<"再买4本书最划算"<<endl;
cout<<"总价为:"<<b*30+25.6<<"元";
break;
case 0:
cout<<"您直接买"<<b*5<<"本书最划算"<<endl;
cout<<"总价为:"<<b*30<<"元";
break;
}
//继续吗?
int con;
cout<<endl<<"继续吗?是输入1,否输入0:";
cin>>con;
if(con==1)
{
main();
}
else
{
return 0;
}
getch();
return;
}
四、结果截图

五、总结
我的队友:胡顺利
队友特点,想法多,思路复杂;
两人一起开发短短的十几分钟就能对一个问题进行较全面的分析,并生成一个估计可行的方案,能够很快的进行开发。

浙公网安备 33010602011771号