用sort对结构体进行排序,最后做循环判断算出price
第一次测试点2出现错误,原因是 库存量也就是a也可能是浮点型,所以把int 改为double或者float
第二次测试点3出现错误,原因是最后循环时忘记考虑到需求量小于库存量之和,应该在循环加上j<n;
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
struct moon
{
float a;
double b;
double c;
};
int cmp(moon j,moon k)
{
return j.c>k.c;
}
int main()
{
int n,sum,j=0;
double price=0.0;
cin>>n>>sum;
vector<moon>s(n);
for(int i=0;i<n;i++)
{
cin>>s[i].a;
}
for(int i=0;i<n;i++)
{
cin>>s[i].b;
}
for(int i=0;i<n;i++)
{
s[i].c=s[i].b/s[i].a;
}
sort(s.begin(),s.end(),cmp);
for(j=0;sum>=s[j].a&&j<n;j++)
{
price+=s[j].b;
sum=sum-s[j].a;
}
price=price+s[j].c*sum;
printf("%.2f",price);
return 0;
}