pat乙级1020 这道题要记得考虑指针越界

来源:互联网 发布:网络负面的影响 编辑:程序博客网 时间:2024/06/18 05:38

题目链接:pat乙级1020


要考虑到有一种情况 是供不应求

代码如下:

#include<iostream>#include <stdio.h>#include<vector>#include<algorithm>using namespace std;struct yb{    double kucun;    double sell;    double unit;};bool cmp(yb a,yb b){    return a.unit>b.unit;}int main(){    vector<yb> y_b;    int N,D;    scanf("%d%d",&N,&D);    yb temp;    for(int i=0; i<N; i++)    {        scanf("%lf",&(temp.kucun));        y_b.push_back(temp);    }    for(vector<yb>::iterator it=y_b.begin(); it!=y_b.end(); it++)    {        scanf("%lf",&((*it).sell));        (*it).unit=((*it).sell/(*it).kucun);    }    sort(y_b.begin(),y_b.end(),cmp);    bool flag=false;    vector<yb>::iterator it=y_b.begin();    int remain_D=D;    double sum=0;    while(!flag&&it!=y_b.end())    {        remain_D=D-(*it).kucun;        if(remain_D>0)        {            sum+=(*it).sell;            D=remain_D;            it++;        }        else        {            sum+=D*((*it).unit);            flag=true;        }    }printf("%.2lf",sum);return 0;}


原创粉丝点击