文章
10
粉丝
102
获赞
20
访问
8.4k
#include<bits/stdc++.h>
using namespace std;
struct bankuai{
double a;
double b;
double c=b/a;
}aa[1005];
bool cmp(bankuai a1,bankuai a2){
return a1.c<a2.c;
}
int main(){
int m,n;
while(cin>>m>>n){
if(n==-1&&m==-1) break;
for(int i=0;i<n;i++){
cin>>aa[i].a>>aa[i].b;
}
sort(aa,aa+n,cmp);
double sum=0;
for(int i=0;i<n;i++){
if(m>=aa[i].b){
sum+=aa[i].a;
m-=aa[i].b;
}
else{
sum+=(m/aa[i].c);
break;
}
}
cout<<fixed<<setprecision(3)<<sum<<endl;
}
}
登录后发布评论
double c=b/a;这种写法是有问题的,如果想在初始化结构体的时候就记录c的值,就需要写一个构造函数,而不是在声明阶段直接写(因为这个时候a和b都还未初始化)
下面是正确的写法,使用构造函数
struct node {
float a, b;
float c;
node(float a, float b) {
this->a = a;
this->b = b;
this->c = a / b;
}
};
这样当初始化node(1,2)才会有node.c = 0.5
可以在输入之后把c的值打印出来看一下,应该是不支持这种写法的
解决了吗