您的位置:首页 > 编程语言 > Java开发

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

2017-10-10 21:24 281 查看

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

输入:

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
[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
;
int[] arr1 = new int
;
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;
}
}
}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐