链接:https://www.nowcoder.com/questionTerminal/95329d9a55b94e3fb2da475d3d052164
来源:牛客网

你打开了美了么外卖,选择了一家店,你手里有一张满X元减10元的券,店里总共有n种菜,第i种菜一份需要A_i元,因为你不想吃太多份同一种菜,所以每种菜你最多只能点一份,现在问你最少需要选择多少元的商品才能使用这张券。

输入描述:

第一行两个正整数n和X,分别表示菜品数量和券的最低使用价格。(1≤n≤100, 1≤X≤10000) 接下来一行n个整数,第i个整数表示第i种菜品的价格。(1≤A_i≤100)

输出描述:

一个数,表示最少需要选择多少元的菜才能使用这张满X元减10元的券,保证有解。

示例1

输入

5 20
18 19 17 6 7

输出

23

0/1背包问题

首先这道题算最小的结果,我们转换思想,由于一个菜只能点一份,我们先算出所有数的总和,接着减去price,假设减去后的结果为v,v如果小于0说明不存在满减的可能

v大于0 则所给的菜品中一定有数字的组合小于等于v

小于等于v的最大值即可,(v- 最大值 + price)就是我们需要的结果

设置一个dp数组[i][j]

i为个数,j 为最大结果

import java.util.*;
public class Main{public static void main(String []args){Scanner sc=new Scanner(System.in);int n = sc.nextInt();int price =sc.nextInt();int priceNum[] = new int[n];for(int i = 0;i < n;i++){priceNum[i] = sc.nextInt();}//设置变量记录总和int nums=0;//将数组中的元素进行加和判断满足条件吗for(int num : priceNum){nums += num;}//判断如果总和达不到要求if(nums<price){System.out.println("-1");}//背包容量int v = nums - price;int[][] dp = new int[n + 1][v+1];int res = 0;for(int i = 1; i <= n; i++){for(int j = 1; j <= v; j++){if(j >= priceNum[i-1]){dp[i][j] = Math.max(dp[i-1][j - priceNum[i-1]] + priceNum[i-1], dp[i-1][j]); }else{dp[i][j] = dp[i-1][j];}}}System.out.println(v- dp[n][v] + price);}
}

美团笔试题(3)外卖满减相关推荐

  1. 2018 java 美团笔试题

    想进美团的同学注意了,这里是修真院面试笔记整理,那么这里就给大家分享一下 [2018 java 美团笔试题] 技术一面 1.我们先聊聊java基础知识吧,说出Object类的常用方法? 2.刚刚说到o ...

  2. 美团笔试题 淘汰分数

    美团笔试题 淘汰分数 某比赛已经进入了淘汰赛阶段,已知共有n名选手参与了此阶段比赛,他们的得分分别是a_1,a_2-.a_n,小美作为比赛的裁判希望设定一个分数线m,使得所有分数大于m的选手晋级,其他 ...

  3. 美团笔试题2021.8.29(第四题求大佬解答)

    美团笔试题2021.8.29 又再帮同学写,推了这周的周赛,侥幸都有点思路 丁香树 题目描述 思路 因为芳香值最大为30,所以用一个数组存储已走过的芳香值,然后走到第i个点,找比当前芳香值小的有多少个 ...

  4. 美团笔试题之查找幸运星

    美团笔试题之查找幸运星 题目其实很简单,特别简单,当时看一眼题目我心中就有思路了,问题就是我卡在了如何循环输入上了,简直是不可思议, 当时我想复杂了,现在看来如此简单的问题我卡了这么久,实在是不应该啊 ...

  5. 美团笔试题 小美的跳方格

    看到一道美团(不知道什么时候)的笔试题,问题描述如下: 在网上查到过其他网友的解法,感觉和我的理解不太一样, 这里写一下我自己对题目的理解. 我比较疑惑的是小美跳方格的方式,是每次移动一格,还是可跳到 ...

  6. 2019 美团校招笔试题 外卖满减

    时间限制:1秒 空间限制:65536K 你打开了美了么外卖,选择了一家店,你手里有一张满X元减10元的券,店里总共有n种菜,第i种菜一份需要A_i元,因为你不想吃太多份同一种菜,所以每种菜你最多只能点 ...

  7. 美团笔试题——公司食堂

    题目描述 小美和小团所在公司的食堂有N张餐桌,从左到右摆成一排,每张餐桌有2张餐椅供至多2人用餐,公司职员排队进入食堂用餐.小美发现职员用餐的一个规律并告诉小团:当男职员进入食堂时,他会优先选择已经坐 ...

  8. 美团笔试题——正则序列

    题目描述 我们称一个长度为n的序列为正则序列,当且仅当该序列是一个由1~n组成的排列,即该序列由n个正整数组成,取值在[1,n]范围,且不存在重复的数,同时正则序列不要求排序 有一天小团得到了一个长度 ...

  9. 美团笔试题:股票交易日

    在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行).给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益. ...

最新文章

  1. SyntaxError: EOL while scanning string literal
  2. 2022年如何学习自动化测试?这篇文章告诉你
  3. 设计模式(一)-单例模式
  4. 编写wordcount程序
  5. questasim linux安装包,Ubuntu16.04下Questasim10.7安装(64bit)全攻略
  6. Ubuntu 和 Centos 的一点差别
  7. 基于内容的图像检索系统(合集)
  8. 在ruby使用终端启用外部程序
  9. Linux常用命令汇总--tree
  10. 关于Redis启动时报权限不够(-bash: /usr/local/bin/redis-server: Permission denied)
  11. diff git 代码实现_Git比对文件之间的差异
  12. IDEA关联MySQL数据库库
  13. 笔记本按开机键没反应怎么办
  14. mac idea Tomcat 内网映射解决方案
  15. 今日头条2018校招测试开发方向(第一、二、三、四批)编程题汇总 - 题解
  16. java IO编程详解
  17. ROS2和ROS1启动launch的一些分享(关于如何查阅文档的具体说明)
  18. Java之父求职被嫌年纪大:程序员只能吃青春饭?
  19. 负载均衡 反向代理为何叫反向代理?
  20. css边距和填充示例代码,css 内外边距(示例代码)

热门文章

  1. 逻辑回归阈值_逻辑回归算法
  2. win10此电脑不见了_Win10如何把控制面板放到桌面上?Win10控制面板不见了解决方法...
  3. python 统计计数
  4. poj1386 Paly onWords
  5. 2020年acm计算机比赛时间,最新!2020年五大学科竞赛时间安排汇总(建议收藏)...
  6. git分支代码提交主干
  7. VMBox加载拷贝的vid报错E_INVALIDARG (0x80070057) Cannot register the hard disk 'D:\VMBox\win7.vdi' {7bca5a3
  8. 校园招聘的秋招和春招有什么区别?
  9. 新浪云、腾讯云、阿里云、百度云、谷歌云、亚马逊云的区别是什么,哪个更适合国内创业者使用?
  10. Java UTC时间与本地时间互相转换