基本算法思维——拿最多物品

问题:

小赛特别爱购物,有一次他获得了在超市免费购物的机会,超市内有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 }

 

上一篇:明解JAVA 第四章答案


下一篇:Java JDK下载、安装与环境变量配置