唉!今天学了结构体,还了解到了一点贪心算法,啧啧!

交换猫粮

#include

#include

#include

#include

struct p{   

    int mao,cost;   

   double ave;

}num[1100];

   bool cmp(p x,p y)

   {   

        return x.ave>y.ave;

  }

using namespace std;

int main(){   

    int money,n;

    int i; 

   while(cin>>money>>n && !(money==-1 && n==-1))   

   {        

         double sum=0;        

         for(i=0;i<n;i++)        

        {            

        cin>>num[i].mao>>num[i].cost;

        num[i].ave=num[i].mao*1.0/num[i].cost;        

         }        

       sort(num,num+n,cmp);        

       for(i=0;i<n;i++)       

     {            

    if(money<num[i].cost)            

   {                

         sum+=money*num[i].ave;                

         break;            

  }else{                

       sum+=num[i].mao;                

       money-=num[i].cost;            

       }        

     }        

  cout<<fixed;        

  cout.precision(3);        

cout<<sum<<endl;   

}   

return 0;

}

 

你可能感兴趣的:(唉!今天学了结构体,还了解到了一点贪心算法,啧啧!)