题意:
算出最大利润
解答:
分解问题
1、按照单价排序(还是用用写比较器的办法。。)
2、按说给的数量进行计算利润(分别和不同单价的数量进行比较,大于的就全部把价格加上去,到小于这个单价的数量了在用数量乘以单价得到价格)
3、输出格式需要注意
具体java代码如下:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int N=in.nextInt();
int D=in.nextInt();
int[] a=new int[N];
ArrayList<Moon> list=new ArrayList();
for(int i=0;i<N;i++){
a[i]=in.nextInt();
}
for(int i=0;i<N;i++){
int b=in.nextInt();
Moon m=new Moon();
m.amount=a[i];
m.price=b;
m.rate=m.price/m.amount;
list.add(m);
}
Collections.sort(list);
double sum=0.0;
for(int i=0;i<N;i++){
Moon m1=list.get(i);
if(D>=m1.amount){
sum+=m1.price;
D-=m1.amount;
}
else{
sum+=D*m1.rate;
break;
}
}
System.out.printf("%.2f",sum);
}
}
class Moon implements Comparable<Moon>{
double amount=0.0;
double price=0.0;
double rate=0.0;
public int compareTo(Moon m){
return this.rate>m.rate?-1:1;
}
}