快手校招真题-最少数量货物装箱问题(动态规划)
时间限制:1秒 空间限制:32768K 热度指数:923
本题知识点: Java工程师 C++工程师 快手 动态规划 贪心
算法知识视频讲解
校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。
题目描述
有重量分别为3,5,7公斤的三种货物,和一个载重量为X公斤的箱子(不考虑体积等其它因素,只计算重量)
需要向箱子内装满X公斤的货物,要求使用的货物个数尽可能少(三种货物数量无限)
输入描述:
输入箱子载重量X(1 <= X <= 10000),一个整数。
输出描述:
如果无法装满,输出 -1。
如果可以装满,输出使用货物的总个数。
示例1
输入
4
输出
-1
说明
无法装满
示例2
输入
8
输出
2
说明
使用1个5公斤,1个3公斤货物
题目链接(牛客网)
思路:动态规划,小于8的直接特判,定义数组dp,索引代表箱子重量,dp的值代表货物的数量,值等于int的最大值时,代表无法装满。只考虑装最后一个货物,则dp[i]=min(dp[i-3],dp[i-5],dp[i-7])+1;
代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Main
{public static void main(String[] args) {int max=Integer.MAX_VALUE;Scanner sc=new Scanner(System.in); int x=sc.nextInt();if(x<8){if(x==3||x==5||x==7)System.out.println(1);else if(x==6)System.out.println(2);elseSystem.out.println(-1);}else{int[] dp=new int[x+1];dp[3]=1;dp[5]=1;dp[7]=1;dp[1]=max;dp[2]=max;dp[4]=max;dp[6]=2;for(int i=8;i<=x;i++){int temp=max(dp[i-3],dp[i-5],dp[i-7]);if(temp==max)dp[i]=max;elsedp[i]=temp+1;}if(dp[x]==max)System.out.println(-1);elseSystem.out.println(dp[x]);}}private static int max(int i, int j, int k) {if(i<=j&&i<=k)return i;if(j<=i&&j<=k)return j;if(k<=j&&k<=i)return k;return -1;}}
快手校招真题-最少数量货物装箱问题(动态规划)相关推荐
- 快手校招面试题 最少数量货物装箱问题
题目 链接:https://www.nowcoder.com/questionTerminal/37aa8a88a72e47f798a14d63bee61d8f?toCommentId=3433244 ...
- java动态规划装箱问题,最少数量货物装箱问题
题目描述: 最少数量货物装箱问题_牛客网 有重量分别为3,5,7公斤的三种货物,和一个载重量为X公斤的箱子(不考虑体积等其它因素,只计算重量) 需要向箱子内装满X公斤的货物,要求使用的货物个数尽可能少 ...
- 最大公共子串----快手校招真题
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:2101 本题知识点: 算法工程师 快手 字符串 动态规划 算法工程师 快手 2019 算法知识视频讲 ...
- 牛客网 2018校招真题 京东 回文
Description 牛客网 2018校招真题 回文 Solving Ideas 计算以str[str.length() - 1]为结尾的最大的回文长度,从而判断最少需要追加多少个字母才能使整个串成 ...
- 牛客网——2017校招真题在线编程(pythonC++)
牛客网--2017校招真题在线编程(python&C++) 1.n个数里的最小k个 题目描述 找出n个数里最小的k个 输入描述: 每个测试输入包含空格分割的n+1个整数,最后一个整数为k值,n ...
- 200 道算法面试题集锦!Python 实现,含华为、BAT 等校招真题!
点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 春招临近,无论是要找工作的准毕业生,还是身在职场想要提升自己的程序员,提升自己的算法内功心法. ...
- 拼多多2018年校招真题
拼多多2018年校招真题 题目描述 给定一个无序数组,包含正数.负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 无序整数数组A[n] 输出 ...
- 牛客网 2018校招真题 美团点评 K的倍数
Description 牛客网 2018校招真题 K的倍数 Solving Ideas sum[i + 1]: 表示序列p[0]...p[i]的和 从长度最大的子串开始判断,当剩余需要判断子串长度不可 ...
- 牛客网 2018校招真题 摩拜 排序次数
Description 牛客网 2018校招真题 排序次数 Solving Ideas 将数组a的元素拷贝到数组b 对数组b进行排序 对比数组b,统计数组a中已排序的元素个数 如:a = [2, 11 ...
最新文章
- Java 中的注解是如何工作的?
- 计算机网络的拓扑结构主要有新型,计算机网络中主要拓扑结构有 ______。
- jQuery选择器的效率问题
- 一个电脑同时运行 64bit 和 32bit 的eclipse 如何匹配 jdk环境
- 极致CMS个人博客企业官网模板
- qt程序中使用 环境变量_目的:使用CUDA环境变量CUDA_VISIBLE_DEVICES来限定CUDA程序所能使用的GPU...
- python没有上方工具栏_PyQt5快速上手基础篇8-菜单栏、工具栏和状态栏
- signature=cb97f07fbd7b371e6311b0d8707b6398,vue 汉字转拼音(filter)
- WebSocket使用sendObject(Object arg0)向页面方法发送对象
- 软件项目需求调研报告模板下载_需求调研规范
- 二维联合分布的密度函数计算
- 2020年10款网盘大比拼,总有一款适合你
- npm install 报错 this command with --force, or --legacy-peer-deps
- python0不能做除数、怎么解决_为什么0不能作为除数?真正的原因是……
- [系统安全] 二十五.WannaCry勒索病毒分析 (1)Python复现永恒之蓝漏洞实现勒索加密
- 美国博士后J1签证北京面签经过
- 数字信号处理专题(1)——DDS函数发生器环路Demo
- Mysql数据库root密码管理四法
- 【LittleVGL】stm32f412-discovery探索板-ft6x06驱动问题
- django - celery