java动态规划装箱问题,最少数量货物装箱问题
题目描述:
最少数量货物装箱问题_牛客网
有重量分别为3,5,7公斤的三种货物,和一个载重量为X公斤的箱子(不考虑体积等其它因素,只计算重量)
需要向箱子内装满X公斤的货物,要求使用的货物个数尽可能少(三种货物数量无限)
输入描述:
输入箱子载重量X(1 <= X <= 10000),一个整数。
输出描述:
如果无法装满,输出 -1。
如果可以装满,输出使用货物的总个数。
输入示例1:
4
输出示例1:
-1
说明:
无法装满
示例2
输入示例2:
8
输出示例2::
2
说明:
使用1个5公斤,1个3公斤货物
题目分析:
这道题呢,显然是用动态规划的啦。初始状态为:
dp[0]=0;
dp[3]=1;
dp[5]=1;
dp[6]=2;
dp[7]=1;
状态转移方程为:
dp[i]=min(dp[i-7],dp[i-5],dp[i-3])+1;
具体代码如下~
代码实现:
import java.util.Scanner;
import java.util.Arrays;
import java.lang.Math;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
int[] dp=new int[10001];
Arrays.fill(dp,Integer.MAX_VALUE);
dp[0]=0;
dp[3]=1;
dp[5]=1;
dp[6]=2;
dp[7]=1;
for(int i=8;i<=x;i++){
if(Integer.MAX_VALUE==dp[i-7]&&Integer.MAX_VALUE==dp[i-5]&&Integer.MAX_VALUE==dp[i-3])
dp[i]=Integer.MAX_VALUE;
else
dp[i]=min(dp[i-7],dp[i-5],dp[i-3])+1;
}
if(Integer.MAX_VALUE==dp[x])
System.out.print(-1);
else
System.out.print(dp[x]);
return;
}
public static int min(int a,int b,int c){
return Math.min(Math.min(a,b),c);
}
}
java动态规划装箱问题,最少数量货物装箱问题相关推荐
- 快手校招真题-最少数量货物装箱问题(动态规划)
时间限制:1秒 空间限制:32768K 热度指数:923 本题知识点: Java工程师 C++工程师 快手 动态规划 贪心 算法知识视频讲解 校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时 ...
- 快手校招面试题 最少数量货物装箱问题
题目 链接:https://www.nowcoder.com/questionTerminal/37aa8a88a72e47f798a14d63bee61d8f?toCommentId=3433244 ...
- 用最少数量的箭引爆气球(Java)
452. 用最少数量的箭引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上.墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 ...
- Java实现 LeetCode 452 用最少数量的箭引爆气球
452. 用最少数量的箭引爆气球 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够 ...
- Leetcode 452 题 用最少数量的箭引爆气球
题目描述 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了.开始坐标总是小于结束 ...
- 贪心法—LeetCode 452 用最少数量的箭引爆气球
用最少数量的箭引爆气球 题目: 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了 ...
- c语言贪心算法合并箭,贪心算法:用最少数量的箭引爆气球
❝ 通知:一些录友表示经常看不到每天上午的文章,现在公众号已经不按照发送时间推荐了,而是根据一些规则乱序推送,所以可能关注了「代码随想录」也一直看不到文章,建议把「代码随想录」设置星标哈,设置星标之后 ...
- Suzy想吃烤蛋挞了Day35 | 贪心算法进行时:860. 柠檬水找零,406. 根据身高重建队列,452. 用最少数量的箭引爆气球
860. 柠檬水找零 solution 不要漏掉的一种情况是:如果收到了20,可以找10+5,或者5+5+5 class Solution:def lemonadeChange(self, bills ...
- 2021.05.20最少数量的箭引爆气球
2021.05.20最少数量的箭引爆气球 题目描述 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以纵坐标并不重要,因此只要知道开始和 ...
最新文章
- ICLR 2020 | 如何解决图像分类中的类别不均衡问题?不妨试试分开学习表征和分类器...
- Android UI学习 - Linear Layout, RelativeLayout
- html底部沉底显示,Footer部分永远沉底。
- Android之Google推荐的图片加载库Glide介绍
- PHP环境搭配(二):lamp(linux+apache+mysql+php)搭建,附moodle与onlinejudge配置
- C语言丨线性表(二):线性链表(单链表)
- golang mysql单例模式_Golang设计模式——单例模式
- c语言创建若干个成绩栏目,2015年计算机二级《C语言》考试上机测试题(6)
- FISCO BCOS Solidity 智能合约 批量插入新增数据
- Using TFS2010 Build 提示:Silverlight 4 SDK is not installed解决方法
- 雨滴式的显示图片 (cloud 转贴) (转)
- 学校固定资产计算机台账,(一)固定资产台账.doc
- Spring Cloud Bus-用法和意义
- Linux使用Aria2命令下载BT种子/磁力/直链文件
- OMV搭建系列教程[6] – 安装AriaNG Web前端
- 思科下一代模拟器EVE-NG镜像导入
- 福禄克DTX-1800其配件DTX-CHA002通道适配器CHANNEL更换RJ45插座小记
- [转](9)跨段跳转,短调用和长调用堆栈图
- 国际图书分类号查询--国际十…
- unity3d游戏开发之 游戏贴图、模型基本规范(QA)