第一道自己独立AC的贪心题,嘿嘿,虽然是模板题,但还是很高兴啦~~下面贴代码
#include<iostream>
#include<cstdio>
using namespace std;
int j[1003];
int f[1003];
double s[1003];
int m,n;
int main()
{
int i,i1,flag,x;
double max,vmax;
while(cin>>m>>n&&m!=-1&&n!=-1)
{
vmax=0;
for(i=0;i<n;i++)
{
cin>>j[i]>>f[i];
if(f[i])//
s[i]=(double)j[i]/f[i];
else {//考虑f[i]是0的情况,这样不需要猫粮就能白白获得食物
s[i]=0;
vmax+=j[i];}
}
while(1)
{
if(n==0)break;//仓库数为0时,直接跳出
else
{ max=0;
for(i=0;i<n;i++)
if(s[i]>=max)
{
max=s[i];
i1=i;
}
if(m<=f[i1])
{
vmax+=m*s[i1];
break;}
else
{
m-=f[i1];
vmax+=j[i1];
s[i1]=0;
}
}
}
printf("%0.3lf\n",vmax);
}
return 0;
}
数据类型要用double,不然会wa.