又干了一题,今天感觉不错呀!再接再厉!晚上继续!!
不知不觉原来用到了昨天看的贪心算法~~~用了才知道这个算法就是贪心,看来还不熟练,继续加油练习!!
FatMouse' Trade
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int M,N,i,k;
double javabean,tmp;
while(cin >> M >> N)
{
if(M==-1 && N==-1)
break;
else
{ javabean=0;
double *p= new double[N];
int *j= new int[N];
int *f= new int[N];
for(i=0; i<N; i++)
{
cin >> j[i] >> f[i];
if(f[i]==0)
{
javabean+=j[i];
p[i]=0;
}
else
p[i]=(double)(j[i])/f[i];
}
for(i=0; i<N-1; i++)
{
for(k=i+1; k<N; k++)
if(p[i]<p[k])
{
tmp=p[i]; p[i]=p[k]; p[k]=tmp;
tmp=j[i]; j[i]=j[k]; j[k]=tmp;
tmp=f[i]; f[i]=f[k]; f[k]=tmp;
}
}
for(i=0; M>0 && i<N; i++)
{
if(M>=f[i])
{
javabean += j[i];
M -=f[i];
}
else
{
javabean += M*p[i];
M=0;
}
}
cout << setiosflags(ios::fixed) << setprecision(3) << javabean << endl;
}
}
return 0;
}