题目:
http://exercise.acmcoder.com/online/online_judge_ques?ques_id=4398&konwledgeId=41
package com.smart.reflect;
/**
* 第一点:最终的定价肯定是某个客户的出价
* 第二点:将客户的价格从高到底排序 然后计算出用户数量乘以价格的最大值 返回价格
* */
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while (scanner.hasNext()){
int n=scanner.nextInt();
int m=scanner.nextInt();
int[] prices=new int[m];
for (int i = 0; i <m ; i++) {
prices[i]=scanner.nextInt();
}
System.out.println(liRun(n,prices));
}
}
public static int liRun(int n,int[] prices){
Arrays.sort(prices); //因为是简单数据类型的数组 因此只能是从后往前计算了
int max=prices[prices.length-1]*1; //价格最大值
int index=prices.length-1;
int low=0;
if (prices.length>n)
low=prices.length-n;//需要满足生产的零件数大于等于客户的数量
for (int i = prices.length-2; i >=low ; i--) {
int temp=prices[i]*(prices.length-i);//价格数量乘以价格数目
if (temp>=max)
{
max=temp;
index=i;
}
}
return prices[index];
}
}
关于Arrays.sort的用法
package com.smart.reflect;
import java.util.Arrays;
import java.util.Collections;
public class Test {
public static void main(String[] args) {
//注意,只能用对象类型,不可以使用简单类型 如int[] num则报错
Integer[] num = {5,8,3,9,1};
//如果是num是List或 Set,则用Collections.sort(num,Collections.reverseOrder());
Arrays.sort(num,Collections.reverseOrder());
for(int i=0;i<num.length;i++){
System.out.println(num[i]);
}
}
}