2020小米校招:01. 小米之家购物

2020小米校招:01. 小米之家购物_第1张图片
2020小米校招:01. 小米之家购物_第2张图片

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class xiaomi202001 {


    /*请完成下面这个函数,实现题目要求的功能
    当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^
    ******************************开始写代码******************************/
    static int solution(int[] prices, int budget) {
        if(budget==0){
            return 0;
        }
        int[] arr = new int[100000];
        Arrays.sort(prices);
        Arrays.fill(arr, Integer.MAX_VALUE);
        arr[0] = 0;
        for (int i = 0; i < budget+1; i++) {
            for (int j = 0; j < prices.length; j++) {
                if(arr[i]!=Integer.MAX_VALUE) {
                    arr[i + prices[j]] = Math.min(arr[i] + 1, arr[i + prices[j]]);
                }
            }
        }
        if(arr[budget]==Integer.MAX_VALUE)
            arr[budget]=-1;
        return arr[budget];
    }
    /******************************结束写代码******************************/


    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int res;

        int _prices_size = 0;
        _prices_size = Integer.parseInt(in.nextLine().trim());
        int[] _prices = new int[_prices_size];
        int _prices_item;
        for(int _prices_i = 0; _prices_i < _prices_size; _prices_i++) {
            _prices_item = Integer.parseInt(in.nextLine().trim());
            _prices[_prices_i] = _prices_item;
        }

        int _budget;
        _budget = Integer.parseInt(in.nextLine().trim());

        res = solution(_prices, _budget);
        System.out.println(String.valueOf(res));

    }
}

你可能感兴趣的:(刷题笔记)