当前位置 博文首页 > 美迪的麦柯的博客:Java胖老鼠的交易

    美迪的麦柯的博客:Java胖老鼠的交易

    作者:[db:作者] 时间:2021-08-17 21:41

    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

    在这里插入图片描述

    END

    cs
    下一篇:没有了