• 链家笔试链家——找寻最小消费获取最大平均分java


    链家找寻最小消费获取最大平均分

    输入:

    5 5 4#表示科目数n,每科最大分值r,平均分avg

    5 2#每科的实际得分,分数加1分的消耗的能量

    4 7

    3 1

    3 2

    2 5

    输出:

    4 #到达n*avg消耗的最小能量

    package Campus;
    import java.io.*;
    import java.util.*;
    public class Main
    {
        public static void main(String args[])
        {
            Scanner cin = new Scanner(System.in);
            int n, r, avg;
            
            n = cin.nextInt();
            r = cin.nextInt();
            avg = cin.nextInt();
            int[][] arr = new int[n][2];
            for(int i = 0; i < n; i++){
               for(int j = 0; j < 2; j++){
                   arr[i][j] = cin.nextInt();
               }
            }
            
            int temp_sum = 0;
            for(int i = 0; i < n; i++){
                temp_sum += arr[i][0];
             }
            int temp_avg = 0;
            temp_avg = temp_sum / n;
            
            if (temp_avg >= avg){
                System.out.println(0);
            }else{
                int[] arr0 = new int[n];
                int[] arr1 = new int[n];
                for(int i = 0; i < n; i++){
                    arr0[i] = arr[i][0];
                    arr1[i] = arr[i][1];
                 }
                int temp0=0;
                int temp1=0;
                for(int i = 0; i < n-1; i++){
                    for(int j = i; j< n; j++){
                        if(arr0[i] < arr0[j]){
                            temp0=arr0[i];
                            temp1=arr1[i];
                            arr0[i]=arr0[j];
                            arr1[i]=arr1[j];
                            arr0[j]=temp0;
                            arr1[j]=temp1;
                            
                        }
                 }
                }
                //记录差多少分
                int temp3 = 0;
                temp3 = n*avg-temp_sum;
                for(int i = 0; i < n; i++){
                    if(arr0[i] >= avg) continue;
                    else{
                        for(int j= i;j < n-1; j++){
                            for(int k = j+1; k< n; k++){
                                if(arr1[j] > arr1[k]){
                                    temp0=arr0[i];
                                    temp1=arr1[i];
                                    arr0[j]=arr0[k];
                                    arr1[j]=arr1[k];
                                    arr0[k]=temp0;
                                    arr1[k]=temp1;
                                    
                                }
                         }
                        
                        }
                        //记录临时坐标差
                        int temp4 = temp3;
                        int temp5 = 0;
                        for (int g = i; g < n; g++){
                            temp4=temp4-arr1[i]*(r-arr0[i]);
                            temp5=temp5+arr1[i]*(r-arr0[i]);
                            if ( temp4<=0){
                                System.out.println(temp5);
                                break;
                            }
                        }
                    }
                    for(int v = 0; v < n; v++){
                        System.out.println(arr0[v]+","+arr1[v]);
                    }
                    break;
                }
            }
        }
    }
  • 相关阅读:
    努力学习吧!
    C# 捕捉键盘事件
    oracle 11g 及 plsqldeveloper 相关操作
    Oracle 建表空间
    窗体程序 防止重复打开子窗体
    asp 下 ewebeditor 上传图片功能,在IE7,IE8 及更高版本上失效解决方法
    StringBuilder 在后台动态输出 html 代码
    起动停止 Oracle11g 三个服务的批处理写法
    MySQL 常用命令语句
    虚拟机—pychrm
  • 原文地址:https://www.cnblogs.com/smuxiaolei/p/7647892.html
Copyright © 2020-2023  润新知