给定金额,如何购买最多物品

2021-07-04 10:49
264
0
public static void main(String[] args)
{
    int[] price=new int[]{1,22,65,45,7,3,2,1,5,6,9,7};

    Map<Integer, List<Integer>> valueIndexMap=new HashMap();

    for(int i=0;i<price.length;i++)
    {
        List<Integer> indexList=valueIndexMap.get(price[i]);

        if(indexList==null)
        {
            indexList=new ArrayList<Integer>();
            valueIndexMap.put(price[i],indexList);
        }

        indexList.add(i);
    }

    Arrays.sort(price);

    int maxPrice =100;
    int buyCnt=0;
    List<Integer> buyIndex=new ArrayList();

    for(int i=0;i<price.length;i++)
    {
        if(maxPrice<price[i])
        {
            break;
        }
        buyCnt++;
        maxPrice-=price[i];
        buyIndex.add(valueIndexMap.get(price[i]).remove(0));
    }

    System.out.println("buyCnt="+buyCnt+";buyIndex="+buyIndex);
}

全部评论