最优装载问题(贪心)
/**
- 给出n个物体,第i个物体重量为wi。选择尽量多的物体,使得总重量不超过C。
- 6
- 1 2 3 4 5 6 c=10 输出4
*/
package _90贪心;
import java.util.Arrays;
import java.util.Scanner;
/**
* 给出n个物体,第i个物体重量为wi。选择尽量多的物体,使得总重量不超过C。
* 6
* 1 2 3 4 5 6 c=10 输出4
*/
public class 最优装载问题 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int []w=new int[n];//重量
for(int i=0;i<n;i++) {
w[i]=sc.nextInt();
}
int c=sc.nextInt();//总重量
Arrays.sort(w); //对重量进行排序
int ans =f(n, w, c);//传入n个个数 重量 和总重量
System.out.println(ans);
}
private static int f(int n, int[] w, int c) {
// TODO Auto-generated method stub
int sum=0;
int cnt=0;//记录能装的个数
for(int i=0;i<n;i++) {
sum+=w[i];//对重量进行累加
if(sum<=c) {
cnt++;//如果小于则++
}else {
break;
}
}
return cnt;
}
}