Java编写胖老鼠的交易_猫和胖老鼠
FatMouse準備了M磅的Cat-Food,以便用來跟小Cat交換好吃的JavaBean。
現在有N個房間,第i個房間有J[i]磅的JavaBean,其交換的籌碼是F[i]磅的Cat-Food。
當然,FatMouse還是有很大的選擇權的,對任意一個房間,它可以只交換一部分的Cat-Food。
現要求FatMouse以怎樣的策略才能獲得最多的Cat-Food。
這也是一道簡單 & 典型的貪心算法題,
這道貪心比HDOJ-ACM-1052-Tian Ji — The Horse Racing:田忌賽馬要簡單許多,
它的整體思路就是以javaBean/catFood比為基準,大比值房間優先。
/*#include
int main()
{
int M,N;
while(scanf("%d%d",&M,&N)!=EOF)
{
int i,j,J[1000],F[1000],temp1;
double ratio[1000],JavaBeans=0,temp;
if((M==-1)&&(N==-1))
{
return 0;
}
for(int i=0;i
{
scanf("%d%d",&J[i],&F[i]);
ratio[i]=(J[i]*1.0)/F[i];
}
for(i=0;i
{
for(j=0;j
{
if(ratio[j]
{
temp=ratio[j];
ratio[j]=ratio[j+1];
ratio[j+1]=temp;
temp1=F[j];
F[j]=F[j+1];
F[j+1]=temp1;
temp1=J[j];
J[j]=J[j+1];
J[j+1]=temp1;
}
}
}
for(i=0;i
{
if(M>=F[i])
{
JavaBeans=J[i]+JavaBeans;
M=M-F[i];
}
else
{
JavaBeans=JavaBeans+ratio[i]*M;
break;
}
}
printf("%.3lf\n",JavaBeans);
}
return 0;
}*/
#include
#include
using namespace std;
int a[10010];
int b[10010];
double c[10010];
int main ()
{
int m,n;
while(scanf("%d%d",&m,&n)==2)
{
if (m==-1&&n==-1) {break;}
for (int i=0; i
scanf("%d%d",&a[i],&b[i]);
for(int i=0; i
{
c[i]=(a[i]*1.0)/b[i];
}double temp;int temp1;int temp2;
for(int i=0; i
{
for(int j=0; j
{
if(c[j]
{
temp=c[j];
c[j]=c[j+1];
c[j+1]=temp;
temp1=a[j];
a[j]=a[j+1];
a[j+1]=temp1;
temp2=b[j];
b[j]=b[j+1];
b[j+1]=temp2;
}
}
}
float s=0;
for (int i=0; i
{
if(m>=b[i])
{
s=s+a[i];m=m-b[i];
}
else
{
s=s+(c[i])*m;
break;
}
}
printf("%.3f\n",s);
}
return 0;
}
/*
5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1*/
總結
以上是生活随笔為你收集整理的Java编写胖老鼠的交易_猫和胖老鼠的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java菜单动态加载功能_Javascr
- 下一篇: java两个线程循环打印_java循环打