描述
圣诞节来临了,在城市A中圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合带走。圣诞老人的驯鹿最多只能承受一定重量的糖果,请问圣诞老人最多能带走多大价值的糖果。
4 15 100 4 412 8 266 7 591 2样例输出
1193.0
#include<stdio.h>
int n,C,w[10],s[10],Q,temp;
float v[10],aver[10],select,V=0.0;
void main(){
printf("请输入糖果箱数\n");
scanf("%d",&n);
printf("请输入最大承重量\n");
scanf("%d",&C);
for(int i=0;i<n;i++){
s[i]=0;
printf("请输入第%d种糖果价值\n",i+1);
scanf("%f",&v[i]);
printf("请输入第%d种糖果重量\n",i+1);
scanf("%d",&w[i]);
aver[i]=v[i]/w[i];
//printf("%f\n",aver[i]);
}
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
if(aver[k]>select&&s[k]==0){
select=aver[k];
temp=k;
}
}
if(w[temp]<C){
V=V+v[temp];
C=C-w[temp];
s[temp]=1;
}
else{
V=V+aver[temp]*C;
C=0;
s[temp]=1;
break;
}
select=0.0;
}
for(int b=0;b<n;b++)
printf("%d",s[b]);
printf("\n%.1f\n",V);
}