买书实验

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了买书实验相关的知识,希望对你有一定的参考价值。

实验题目:

技术分享技术分享

设计思路:

这次的实验是目前做过最简单的,重点在于把特殊情况找出来,一开始简单的以为只要和五本组合就可以了,除五取余取整就可以了,后来经过课堂上的计算才知道重点在8,所以除10取余取整就可以了。

实验代码:

#include<iostream>
using namespace std;

int main()
{
  int num;
  cout<<"请输入购买书的数量:";
  cin>>num;
  double money=0.0;
  double one,two,three,four,five,six,seven,eight,nine,ten;
  //计算10本书以内的各种最佳购书方案
  one=8;
  two=2*8*(1-0.05);
  three=3*8*(1-0.1);
  four=4*8*(1-0.2);
  five=5*8*(1-0.25);
  six=8+5*8*(1-0.25);
  seven=2*8*(1-0.05)+5*8*(1-0.25);
  eight=2*4*8*(1-0.2);
  nine=5*8*(1-0.25)+4*8*(1-0.2);
  ten=2*5*8*(1-0.25);
  cout<<"最佳购书方案为:"<<endl;
  int a;//计算买a个两套成套的书(10本)
  a=num/10;
  money=a*ten;//计算买a个两套成套的书(10本)需要的金额
  int b;//计算超出a个10本书的个数
  b=num%10;
  switch(b)//计算每种数量的价格
  {
  case(1): {money=money+one; break;}
  case(2): {money=money+two;break;}
  case(3): {money=money+three;break;} 
  case(4): {money=money+four;break;}
  case(5): {money=money+five;break;}
  case(6): {money=money+six;break;}
  case(7): {money=money+seven;break;}
  case(8): {money=money+eight;break;}
  case(9): {money=money+nine;break;}								 
  }
  //输出购买方案
  if(b==8) cout<<"购买"<<a*2<<"套全套的书   再分两次购买 "<<4<<"本不同样的书"<<endl;
  else if(b>=5)
 { 
	  a=a+1;
	  b=b-5;
	  cout<<"购买"<<a*2<<"套全套的书   再买 "<<b<<"本不同样的书"<<endl;
  }
  else  cout<<"购买"<<a*2<<"套全套的书   再买 "<<b<<"本不同样的书"<<endl;
  cout<<"总金额为:"<<money<<endl;



}

  运行结果:

技术分享

经验总结:

总是觉得编程难,这一次是很简单,但是又眼高手低,自以为是,很多时候动手算一算才知道对错。

以上是关于买书实验的主要内容,如果未能解决你的问题,请参考以下文章

201555332盛照宗—网络对抗实验1—逆向与bof基础

6049:买书 (完全背包)

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

(动态规划)6049:买书

动态规划——买书问题

求买书的最低费用