首页 > 代码库 > 婚礼珠宝策划

婚礼珠宝策划

 

图片

 #include<iostream>

#include<cmath>

using namespace std;

struct G
{
 float W;
 float V;
 char N[10];
}g[100];
void wenzi(int & m)
{
 cout<<"某婚礼需要一个珠宝盒"<<endl;

    cout<<"要求该珠宝盒所装的珠宝重量和不能超过50g,且珠宝盒中只能装3件珠宝,但在满足重量,数量要求的范围内,珠宝的价值和要最大"<<endl;

    cout<<"问:该怎么合理的装珠宝于珠宝盒中????"<<endl<<endl;

 cout<<"亲:现有多少种类的珠宝呢?请输入:"<<endl;
 cin>>m;
}
int main()
{
 int M;
 wenzi(M);
 int i,j,k,p=0,A[100],B[100],C[100],a,b,c;
 int w[100],v,max=0;
 for(i=1;i<=M;i++)
 {
  cout<<"第"<<i<<"类商品的名称、重量、价值   :";
  cin>>g[i].N>>g[i].W>>g[i].V;
 }
 for(i=1;i<=M;i++)//第一次取有三种情况
 {
  for(j=1;j<=M;j++)//第二次取有三种情况
  {
   for(k=1;k<=M;k++)//第三次取有三种情况
   {
    p++;
    w[p]=g[i].W+g[j].W+g[k].W;//每种情况的重量和
    if(w[p]<50)//若重量和小于50,将每一次取的珠宝类型记录
    {
     A[p]=i;B[p]=j;C[p]=k;
    }
    //反之,用0初始化
    else
    {
     A[p]=0;B[p]=0;C[p]=0;
    }
   }
  }
 }
 //在满足上述条件的前提下计算珠宝的价值和
 for(p=1;p<=pow(M,3);p++)
 {
  v=g[A[p]].V+g[B[p]].V+g[C[p]].V;
  //并取出最大值
  max=(v>max)?v:max;
 }
 //将满足条件的各种取法记录
 for(p=1;p<=pow(M,3);p++)
 {
  v=g[A[p]].V+g[B[p]].V+g[C[p]].V;
  if(max==v)
  {
   a=A[p];
   b=B[p];
   c=C[p];
  }
 }
 //将结果罗列
 cout<<"满足要求的取法是:"<<endl;
 if(a==b&&a!=c)
 {
  cout<<"取2件"<<g[a].N<<endl;
  cout<<"取1件"<<g[c].N<<endl;
  cout<<"重量和:"<<g[a].W*2+g[c].W<<"克"<<endl;
  cout<<"价值和:"<<g[a].V*2+g[c].V<<"元"<<endl;
 }

 if(a==c&&a!=b)
 {
  cout<<"取2件"<<g[a].N<<endl;
  cout<<"取1件"<<g[b].N<<endl;
  cout<<"重量和:"<<g[a].W*2+g[b].W<<"克"<<endl;
  cout<<"价值和:"<<g[a].V*2+g[b].V<<"元"<<endl;
 }

 if(c==b&&c!=a)
 {
  cout<<"取2件"<<g[c].N<<endl;
  cout<<"取1件"<<g[a].N<<endl;
  cout<<"重量和:"<<g[c].W*2+g[a].W<<"克"<<endl;
  cout<<"价值和:"<<g[c].V*2+g[a].V<<"元"<<endl;
 }
 if(a==b&&a==c)
 {
  cout<<"取3件"<<g[a].N<<endl;
  cout<<"重量和:"<<g[a].W*3<<"克"<<endl;
  cout<<"价值和:"<<g[a].V*3<<"元"<<endl;
 }
 return 0;
}