当前位置 博文首页 > 美迪的麦柯的博客:Java胖老鼠的交易
Description
因为第一个OJ题目,发了个题目的网页截图,自己看了下,好像也不太好阅读,所以就直接不加原题的截图了吧,直接上题目相关信息就好了~🤭
胖老鼠准备M磅的猫粮,准备与守卫仓库的猫交易他最爱吃的JavaBean。仓库有N个房间。第i个房间包含J[I]的JavaBeans,需要F[I]磅的猫粮交换。每个房间可以按比例部分交换,你的任务是计算胖老鼠能获得的最多的JavaBeans。
Input
输入数据有多组,每组数据第一行包括两个正整数M、N,接下来有N行,每行有两个数J[I]和F[I],表示第i个房间JavaBean数量和需要的猫粮数量。当M和N都为-1输入结束。所有数字不会超过1000。
Output
对于每组输入数据,计算胖老鼠能获得的最大JavaBean数量并输出,结果保留三位小数,每个输出占一行。
Sample Input Copy
5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1
Sample Output Copy
13.333
31.500
//package demo;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext())
{
int m=sc.nextInt();
int n=sc.nextInt();
if(m==-1&&n==-1)
break;
double [] c=new double [n];
double [] d=new double [n];
double [] e=new double [n];
for(int i=0;i<n;i++)
{
c[i]=sc.nextDouble();
d[i]=sc.nextDouble();
e[i]=(double)c[i]/d[i];
}
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(e[j]>e[j+1])
{
double temp=e[j];
e[j]=e[j+1];
e[j+1]=temp;
temp=c[j];
c[j]=c[j+1];
c[j+1]=temp;
temp=d[j];
d[j]=d[j+1];
d[j+1]=temp;
}
}
}double sum=0;
for(int i=n-1;i>=0;i--)
{
if(m>d[i]){
sum+=c[i];
m-=d[i];}
else
{
sum+=m*e[i];
break;
}
}
System.out.printf(("%.3f"), sum);
System.out.println();
}//while b
}
}
运行结果:
我的Eclipse的workplace是选在e://Eclipse ,
而安装在d://programe Files//Ecipse里面的,
demo包里面的Main文件是在:
e://Eclipse//demo//src//demo//Main.java
csEND