第一次发表博客,以后请大家多多关照。
这是一道比较简单的关于贪心的问题。这道题的大意是就是给定猫食的总量然后去和猫换JAVABEAN,每个房间都有JAVABEAN,当然每个房间需要的猫食不同。你要求的是利用有限的猫食换取最多的JAVABEAN。
多说无益,还是看一下代码吧。<span style="font-size:14px;color:#000000;background-color: rgb(255, 255, 255);">#include<stdio.h>
int main()
{
int food,home,temp1;
while(scanf("%d%d",&food,&home)!=EOF&&(food!=-1||home!=-1))
{
int j[1000],f[1000];
double max,temp;
max=0;
double ratio[1000];
for(int a=0; a<home; a++)
{
scanf("%d%d",&j[a],&f[a]);
ratio[a]=j[a]*1.0/f[a]*1.0;
}
for(int m=0; m<home; m++)
for(int n=0; n<home-1; n++)
{
if(ratio[n]<ratio[n+1])
{
temp=ratio[n];
ratio[n]=ratio[n+1];
ratio[n+1]=temp;
temp1=j[n];
j[n]=j[n+1];
j[n+1]=temp1;
temp1=f[n];
f[n]=f[n+1];
f[n+1]=temp1;
}
}
for(int n=0; n<home; n++)
{
if(food>=f[n])
{
max=max+j[n];
food=food-f[n];
}
else
{
max=max+food*ratio[n];
break;
}
}
printf("%.3f\n",max);
}
return 0;
}</span>