题目描述:

小米之家有很多米粉喜欢的产品,产品种类很多,价格也不同。比如某签字笔1元,某充电宝79元,某电池1元,某电视1999元等

假设库存不限,小明去小米之家买东西,要用光N元预算的钱,请问他最少能买几件产品?

输入:

第1行为产品种类数

接下来的每行为每种产品的价格

最后一行为预算金额

输出:

能买到的最少的产品的件数,无法没有匹配的返回-1

样例输入:

2
500
1
1000

样例输出:

2

解题思路:

1.总体思路采用动态规划的思想,从1开始计算每个价格能买到的最少产品数。

2.需要注意的坑:有的商品价格可能高于你的预算,也就是prices数组里有的数比budget大一些。

3.表示无法完成的数,这里面采用的是Integer的最大值减1,而不是最大值。(幸运的是测试用例里面没有变态的测试用例)

解题代码:

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;public class Main {/*请完成下面这个函数,实现题目要求的功能
当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^
******************************开始写代码******************************/
static int solution(int[] prices, int budget) {Arrays.sort(prices);int n = 0;for(int i = 0;i<prices.length ;i++){if(prices[i]>budget){break;}n++;}int[] dp = new int[budget+1];for (int i = 0; i <= budget; i++) {dp[i] = Integer.MAX_VALUE-1;}for (int i = 0; i < n; i++) {dp[prices[i]] = 1;}for (int i = 1; i <= budget; i++) {if(dp[i] == Integer.MAX_VALUE-1){for(int j=0;j<n;j++){if(i-prices[j]>0){dp[i] = Math.min(dp[i],dp[i-prices[j]]+1);}}}//            System.out.println(i+":"+Arrays.toString(dp));}return dp[budget]==Integer.MAX_VALUE-1?-1:dp[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));    }
}

解题结果:

2020年小米校招JAVA岗笔试第二题相关推荐

  1. 背包问题 2020年小米校招JAVA岗笔试第二题

    对于背包问题:例如小偷东西问题 如上图 小偷最多可以带走重量位20.要尽可能带走多的商品. 所以应该设置数组capacity[20+1], 商品itmes [5+1] 其中,capacity[0]=0 ...

  2. 2020年快手校招JAVA岗笔试第二题

    解题代码 import java.util.HashSet; import java.util.Scanner; import java.util.Set;public class Main {pub ...

  3. 2020年旷世校招JAVA岗笔试第二题

    字符串长度 题目描述: 给定一个只包含小写英文字母的字符串以及一个常数 k,求字符串最长的包含不超过 k 种字母的子串的长度. 例如,给定字符串 abaabccbbbdddddda,k = 3,这时 ...

  4. 2020年快手校招JAVA岗笔试第一题

    解题办法: import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc ...

  5. 2020年旷世校招JAVA岗笔试第一题

    1的个数 题目描述: 给定非负整数n,输出它的二进制表示中1的个数.例如,把9表示成二进制是1001,有2位是1.因此,如果n=9,则输出2. 输入 一行非负整数n,n最大不超过32位有符号整数的最大 ...

  6. 2020年快手校招JAVA岗笔试第三题

    题目描述: 将两个内容合并,每次,取第一行四个,取第二行5个.把多余的直接补在最后即可. 解题代码 import java.util.Scanner;public class Main_3 {publ ...

  7. 2017年爱奇艺校招Java研发笔试编程题(2个)

    相似单词变换 时间限制:C/C++语言 1000MS:其他语言 3000MS 内存限制:C/C++语言 65536KB:其他语言 589824KB 题目描述: 英文单词有很多非常相似,比如:see和s ...

  8. 2020年奇安信校招JAVA岗笔试

    二元查找树(1.若左子树不空,左子树值都小于父节点:2.如右子树不空,右子树值都大于父节点:3.左.右子树都是二元查找树:4. 没有键值相等的节点)上任意两个节点的值,请找出它们最近的公共祖先. 输入 ...

  9. 用友2020校招java笔试题_2020年快手校招JAVA岗笔试第三题-Go语言中文社区

    题目描述: 将两个内容合并,每次,取第一行四个,取第二行5个.把多余的直接补在最后即可. 解题代码 import java.util.Scanner; public class Main_3 { pu ...

最新文章

  1. 从飞天到倚天 阿里云底层自研技术大爆发
  2. shllter自动和手动实例
  3. Error:The supplied javaHome seems to be invalid. I cannot find the java executable
  4. NLP复习资料(4)-第八章 句法分析
  5. 区块链人才缺口明年将达顶峰,核心开发者年入百万很正常
  6. aix查看oracle进程内存,Aix 查看进程占用内存大小(按从大小排列)
  7. 使用Java实现发送email邮件
  8. win10清理c盘_别再用什么管家!打开这个功能,Win10自动给你清垃圾
  9. 2月英语总结 —— 跟读 and topic
  10. [经典]PK:星际争霸 vs 魔兽争霸3 vs 红警
  11. Ubuntu下修改只读文件方法
  12. 用虚拟鸭子CYBERDUCK同步RACKSPACE CLOUD文件
  13. 一对一或一对多音视频通话会议系统可以通过哪些方式实现?
  14. 单片机遥控开关mos管
  15. c语言初步实验报告,c语言实验报告(大一c语言实验报告答案)
  16. cocos creator 显示截图并保存图片到手机
  17. 安装完PLSQL遇到Initialization error错误解决办法
  18. Java:15位或18位居民身份证号码通用校验(正则表达式、日期格式、末尾校验码)
  19. CodeForces 1216CodeForces 1221 A~D
  20. 超级好用的小程序版蓝牙调试工具:Ble蓝牙开发助手

热门文章

  1. Velocity+IText+Flying-saucer生成pdf文件
  2. 2020web前端学习路线(附全套前端视频教程+教学大纲
  3. Python入门学习之个人税务计算练习(if)
  4. jvm 性能调优工具之 jstat 命令详解
  5. 二十一世纪大学英语读写教程(第四册)学习笔记(原文)——10 - My Graduation Speech(毕业演说)
  6. Java8 stream流式表达式用法
  7. 苹果手机iframe撑大父页解决办法
  8. 黑客入侵微软邮件服务器部署勒索软件、惠普更新打印机漏洞|12月2日全球网络安全热点
  9. 源代码可以申请版权登记吗
  10. 直播美颜SDK动态贴纸详解