java 求助 5个RE 样例能过 自己试了几个值也没问题
查看原帖
java 求助 5个RE 样例能过 自己试了几个值也没问题
867302
fhuaino楼主2022/12/23 18:47
import java.util.Scanner;
public class abcd {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            //有N堆金币
            int N= sc.nextInt();
            //袋子的容量
            int T=sc.nextInt();
            //带走的价值
            double money=0;
            //用二维数组接收每一堆金币的总重量和总价值
            int a[][]=new int[N][2];
            for (int i = 0; i < N; i++) {
                for (int j = 0; j < 2; j++) {
                    a[i][j]=sc.nextInt();
                }
            }

            //将二维数组根据金币单价来排列
            for (int i = 0; i < N; i++) {
                for (int j=i+1;j<N;j++){

                    if (a[i][1]/a[i][0]<a[j][1] / a[j][0]) {
                        int temp1=a[i][1];
                        int temp2=a[i][0];
                        a[i][1]=a[j][1];
                        a[i][0]=a[j][0];
                        a[j][1]=temp1;
                        a[j][0]=temp2;
                    }

                }


            }
           /* for (int i = 0; i < N; i++) {

                    System.out.println(a[i][0]+" "+a[i][1]);

            }*/



            for (int i=0;i<N-1;++i) {

                if (T>=a[i][0]){
                    money+=a[i][1];
                    T-=a[i][0];}
                //判断背包容量不够装下一堆金币
                if (T<a[i+1][0]){
                   // System.out.println(T);
                   // System.out.println ( (30.00/16.00));
                   // System.out.println(i+1);
                  //  System.out.println(   (1.00 * a[i+1][1] /1.00* a[i+1][0]));
                    money+=T*1.0*(double)1.0*a[i+1][1]/a[i+1][0];
                    break;

                }
            }
            System.out.println(String.format("%.2f",money));

        }
    }


2022/12/23 18:47
加载中...