购书思想课堂作业4.14
1.题目:
本数 折扣
2 5%
3 10%
4 20%
5 25%
要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。
2.设计思想
当购书数目为0~5时,不需讨论。
当购书数为6时,经过计算,5+1的方案最便宜,
当购书数为7时,经过计算,5+2的方案最便宜。
当购书数为8时,经过计算,4+4的方案最便宜。
但购书数为9时,经过计算,5+4的方案为最佳。
这里我们可以看出除了购书数为8时,没有5本折扣,其他数目都由5方案和其他方案组成。
而当购书数目n大于10时,我们可以把n看成:n=5*b+a,也就是一个5的倍数加上一个6~9之间的数,因此对于任何数目,主要的购书分歧在于这6~9本应该如何购买,购买方案参照上述
于是按照这个思想,我们设计程序时可以这样做,接受购书的数目num,把num用10mod,如果余数是6~9之间,就mod10处理除数和余数,如果是1~4之间,就减去5之后再mod10处理除数和余数,如果是余数是5和0的话,就直接按5方案处理。
3.源代码
#include<iostream.h>
void show(int x , double &jia)
{
if(x==6)
{
cout<<" 5 1 ";
jia=jia+5*8*0.75+8;
}
if(x==7)
{
cout<<" 5 2 ";
jia=jia+5*8*0.75+2*8*0.95;
}
if(x==8)
{
cout<<" 4 4 ";
jia=jia+8*8*0.8;
}
if(x==9)
{
cout<<" 5 4 ";
jia=jia+5*8*0.75+4*8*0.8;
}
}
void main()
{
cout<<"请输入要购买的书的数量:"<<endl;
int num,a,b,i;
double jia=0;
cin>>num;
cout<<"最便宜的购书方案:"<<endl;
a=num%10;
if(a>5)
{
b=num/5;
for(i=1;i<=b;i++)
{
cout<<" 5 ";
}
jia=jia+b*8*5*0.75;
show(a,jia);
}
else if(a<5&&a>0)
{
a=a+5;
b=num/5-1;
for(i=1;i<=b;i++)
{
cout<<" 5 ";
}
jia=jia+b*8*5*0.75;
show(a,jia);
}
else
{
b=num/5;
for(i=1;i<=b;i++)
{
cout<<" 5 ";
}
jia=jia+b*8*5*0.75;
}
cout<<endl<<"一共花费"<<jia<<"元"<<endl;
}
3.截图



4.个人总结
算法很简单,方法很重要
浙公网安备 33010602011771号