问题:
小赛特别爱购物,有一次他获得了在超市免费购物的机会,超市内有n件物品,第i(1<=i<=n)件物品的价值为ai,但是他能拿的物品的价值总和不能超过V。贪心的小易希望能拿尽量多数量的物品,那么请你帮他计算下他最多能拿到多少件物品?
分析:
将物品排序,每次只拿当前价值最低的,就可以拿到最多的物品。
code:
1 import java.util.Arrays; 2 import java.util.Scanner; 3 4 public class Main2 { 5 public static void main(String args[]){ 6 Scanner s = new Scanner(System.in); 7 8 int n,v; 9 while(s.hasNext()){ 10 n = s.nextInt(); 11 v = s.nextInt(); 12 int[] dp = new int[n]; 13 for(int i=0;i<n;i++){ 14 dp[i] = s.nextInt(); 15 } 16 //按升序排序 17 Arrays.sort(dp); 18 int sum=0; 19 int i; 20 for(i=0;i<n;i++){ 21 if((sum+dp[i])<=v){ 22 sum+=dp[i]; 23 }else{ 24 break; 25 } 26 } 27 System.out.println(i); 28 } 29 30 } 31 }